ExpertiDict

Java · Avançado · Português · Técnico

reflexão

/hefleˈksɐ̃w/substantivo

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)); // 0

Exemplos

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

Veja também

Todos os termos de Java