Java · Avançado · Português · Técnico
reflexão
Capacidade de inspecionar e manipular classes, métodos e campos em tempo de execução, pela API java.lang.reflect, sem conhecê-los na compilação.
Onde usar
Está por trás de Spring, Hibernate e JUnit, que descobrem anotações e instanciam classes. Surge em NoSuchMethodException e em avisos sobre acesso a módulos.
Em código
var nome = "java.util.ArrayList";
var c = Class.forName(nome);
var lista = c.getDeclaredConstructor()
.newInstance();
var m = c.getMethod("size");
System.out.println(m.invoke(lista)); // 0Exemplos
O framework instancia a classe por reflexão.
A reflexão quebrou porque o módulo não abre o pacote.
Cuidado
É mais lenta, burla verificações do compilador e, desde o Java 9, o setAccessible pode ser barrado pelo sistema de módulos.
Sinônimos
reflection