Java Reflection

Recurso avançado, incluso na distribuição padrão do Java a partir da versão 1.1.  Permite que o desenvolvedor obtenha informações sobre determinada classe durante a execução do programa. Por exemplo, com o uso desta API é possível obter a lista de todos os métodos de uma classe, podendo executá-lo ou ainda obter informações sobre sua estrutura declarativa.

Eis uma lista das coisas que podemos fazer com a Java Reflection API:

  • Determinar a classe de um objeto;
  • Obter informações sobre os modificadores, campos, métodos, construtores e superclasses de uma classe;
  • Descobrir quais constantes e declarações de métodos pertencem a uma interface;
  • Criar uma instância de uma classe cujo nome não sabemos até o tempo de execução;
  • Obter e definir o valor do campo de um objeto;
  • Invocar um método em um objeto;
  • Criar um novo array, cujo tamanho e tipo de dados só saberemos em tempo de execução.
      A Java Reflection API é geralmente usada para criar ferramentas de desenvolvimento tais como debuggers, class browsers e construtores de GUI. Geralmente, neste tipo de ferramentas, precisamos interagir como classes, objetos, métodos e campos, e não sabemos quais em tempo de compilação. Assim, a aplicação deve, dinamicamente, encontrar e acessar estes itens.
  • Imaginem por exemplo, você não precisar criar uma classe DAO para cada entidade do seu projeto e então essa classe DAO ser gerada em tempo de execução, somente passando o nome da sua entidade(Pojo)…. Ex: passo a classe Atividade.Class e o reflection lê o meu pojo de atividades e consegue me devolver todos os métodos e atributos dela, me dispensando então de criar classes específicas para acesso ao banco, visto que meu pojo é anotado para o hibernate/JPA.

Ainda estou estudando sobre o assunto, mas para quem quer saber mais, segue alguns links interessantes:

http://www.guj.com.br/article.show.logic?id=10

http://www.arquivodecodigos.net/dicas/java-saiba-o-que-e-reflexao-reflection-em-java-1833.html

http://www.technopub.com.br/arquivo/32

Assim que for aprendendo, vou postando aqui e quem quiser acrescentar coisas ao estudo, sinta-se a vontade.

No comments yet.