Reflection lejon një program të inspektojë dhe manipulojë klasa, metoda dhe fusha në kohën e ekzekutimit — madje edhe ato të panjohura në kohën e kompilimit. Annotations bashkangjitojnë metadata në kod që mjetet dhe framework-et e lexojnë (shpesh përmes reflection) për të drejtuar sjelljen. Së bashku, ato fuqezojnë shumën e "magjisë" të framework-ut të Java (Spring, JPA, JUnit).
Reflection — inspektimi dhe kërkesa në kohën e ekzekutimit
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();
