Reflection stelt een programma in staat om klassen, methoden en velden tijdens runtime te inspecteren en te manipuleren — zelfs degene die op compilatietijd onbekend zijn. Annotaties voegen metadata toe aan code die tools en frameworks lezen (vaak via reflection) om gedrag aan te sturen. Samen vormen zij veel van Java's framework "magie" (Spring, JPA, JUnit).
Reflection — runtime-inspectie en aanroeping
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();
