Reflection ermöglicht einem Programm, Klassen, Methoden und Felder zur Laufzeit zu inspizieren und zu manipulieren — sogar solche, die zur Compile-Zeit unbekannt sind. Annotations hängen Metadaten an Code an, die Tools und Frameworks lesen (oft via Reflection), um Verhalten zu steuern. Zusammen treiben sie viel von Javas Framework-"Magie" an (Spring, JPA, JUnit).
Reflection — Laufzeit-Inspektion und Aufruf
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();
