A importância do Reflection no Java
java, javaee, livros 27th December, 2007Para alguns a utilização de reflection no java é novidade, mas não é novidade. Reflection existe desde a versão 1.1 do Java e somente nos últimos tempos que vem chamando atenção na comunidade.
O motivo para essa visibilidade se deu por conta da injeção de dependência (do inglês dependency injection, ou simplesmente DI), que apareceu no framework Spring e logo em seguida no EJB 3.0.
Você acha que Strings são imutáveis? Sim, elas são. Mas utilizando reflection essa afirmação pode ser modificada.
Você acha que atributos privados não podem ser acessados por outras classes? Não podem, mas utilizando reflection tem como outra classe acessar os atributos privados.
E agora? Meu código estará vulnerável por causa do reflection?
Você pode limitar o uso de reflection em seus projetos, utilizando o SecurityManager para impedir modificações em atributos, construtores e métodos.
Portanto, o uso de reflection trás inúmeras facilidades e poder para o desenvolvimento. A Java Persistence API também utiliza reflection para descobrir os mapeamentos, as classes que se relacionam entre si, os tipos dos atributos e muito mais.
Leitura recomendada
Livro

4th January, 2008 as 9:10 pm
Olha aí, só quem escreve. Vou contribuir com um comentário.
Reflection é um recurso muito atrativo à primeira vista, mas deve ser usado com muito cuidado porque os erros só costumam aparecer em runtime e trazem uma conseqüência desastrosa na manutenção.
Então, se você não tiver construindo um framework ou uma tecnologia, evite Reflection. Busque outras alternativas.
Ah, sem esquecer da performance. Reflection não é muita amiga dela.
[]’s
5th January, 2008 as 6:41 pm
@Tarso
Neste post eu quis apenas mostrar onde o Reflection se encaixa nos códigos e deixei essa parte (performance) para os comentários.
Com certeza um bom programador deve utilizar Reflection com cuidado, sabendo evitá-lo na hora certa.
Abraço.
16th January, 2008 as 1:49 pm
Outra forma interessante poderia ser a utilização de programação orientada a aspectos, com a vantagem de não perder perfomance.