"Olá, amigo!"
"Agora é hora do evento principal. Vamos nos familiarizar com a classe Class e tocar em Reflection.
Como você provavelmente já percebeu, tudo em Java é um objeto. E o que um objeto precisa? O que cada objeto tem que define do que se trata?"
"Uma aula!"
"Certo! Muito bem. Cada objeto tem uma classe. Mas voltando aos objetos... Alguns objetos contêm inteiramente uma entidade, enquanto outros simplesmente ajudam a gerenciá-la."
"Este último tipo inclui FileOutputStream e Thread . Quando você cria um objeto Thread , um novo thread não é criado. O thread é criado pela máquina virtual Java depois que o método start() é chamado. Esse objeto simplesmente ajuda a gerenciar o processo."
"O mesmo com FileOutputStream : o arquivo é armazenado em disco e o sistema operacional gerencia o armazenamento e o acesso. Mas podemos interagir com ele por meio de objetos File, mais uma vez com a ajuda da máquina virtual Java."
"Sim, eu já entendo isso."
"Então, há uma classe especial chamada Class para interagir com as classes."
"Isso não foi difícil de adivinhar."
"Sim. Cada vez que a máquina virtual Java carrega uma nova classe na memória, ela cria um objeto Class, que você pode usar para obter informações específicas sobre a classe carregada."
"Cada classe e objeto está associado a um « objeto de classe »."
Exemplo | Descrição |
---|---|
|
Obtém o objeto Class da classe Integer. |
|
Obtém o objeto Class da classe int. |
|
Obtém o objeto Class de um objeto String. |
|
Obtém o objeto Class do objeto Object. |
"Nossa que interessante!"
"Você se lembra que a palavra class é uma palavra-chave em Java e não pode ser usada como nome de variável?"
"Oh sim, eu sei, eu sei. Eu apenas esqueci."
"Você já usou o objeto Class em algum lugar?"
"Sim, nós o usamos quando escrevemos nossa própria implementação do método equals."
"Sim, você pode usar o método getClass() para testar se os objetos têm a mesma classe."
"E o que você pode fazer com esse objeto?"
"Bem, um monte de coisas:"
código Java | Descrição |
---|---|
|
Obtém o nome da classe. |
|
Obtém uma classe pelo nome. |
|
Compara as classes dos objetos. |
"Interessante, mas não tão legal quanto eu pensava."
"Você quer que seja legal? Também tem Reflection . Reflection é super legal."
"O que é Reflexão ?"
" Reflexão é a capacidade de uma classe obter informações sobre si mesma. Java tem classes especiais: Field e Method , que são semelhantes à classe Class para classes. Assim como os objetos Class permitem obter informações sobre uma classe, os objetos Field fornecem informações sobre um campo , e o objeto Method fornece informações sobre um método. E veja o que você pode fazer com eles:"
código Java | Descrição |
---|---|
|
Obtém uma lista de objetos Class para as interfaces da classe List |
|
Obtém o objeto Class da classe pai da classe String |
|
Obtém uma lista dos métodos da classe List |
|
Cria uma nova String |
|
Obtém o método length da classe String e o chama no String s |
"Uau! Isso é muito legal!"
GO TO FULL VERSION