Reflektion låter ett program inspektera och manipulera klasser, metoder och fält vid körning — även sådana som är okända vid kompileringstid. Annotationer bifogar metadata till kod som verktyg och ramverk läser (ofta via reflektion) för att driva beteende. Tillsammans möjliggör de mycket av Javas ramverk "magi" (Spring, JPA, JUnit).
Reflektion — inspektion och anrop vid körning
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();
