La réflexion permet à un programme d'inspecter et manipuler des classes, des méthodes et des champs à l'exécution — même ceux inconnus au moment de la compilation. Les annotations attachent des métadonnées au code que les outils et frameworks lisent (souvent via la réflexion) pour piloter le comportement. Ensemble, elles alimentent une grande partie de la « magie » des frameworks Java (Spring, JPA, JUnit).
Réflexion — inspection et invocation à l'exécution
Class<?> clazz = Class.forName();
(Field field : clazz.getDeclaredFields()) {
System.out.println(field.getName() + + field.getType());
}
(Method method : clazz.getDeclaredMethods()) {
System.out.println(method.getName());
}
clazz.getDeclaredConstructor().newInstance();
clazz.getMethod(, String.class);
m.invoke(instance, );
clazz.getDeclaredField();
f.setAccessible();
