Reflection lader et program inspicere og manipulere klasser, metoder og felter ved kørselstid — selv dem, der er ukendte ved kompileringstid. Annotations knytter metadata til kode, som værktøjer og frameworks læser (ofte via reflection) for at styre adfærd. Sammen driver de meget af Javas framework "magi" (Spring, JPA, JUnit).
Reflection — inspektion og invokation ved kørselstid
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();
