Reflection huruhusu programu kukagua na kudhibiti classes, methods, na fields wakati wa runtime — hata zile zisizojulikana wakati wa compile. Annotations huambatanisha metadata kwenye msimbo ambayo zana na frameworks husoma (mara nyingi kupitia reflection) kuendesha tabia. Kwa pamoja zinaendesha sehemu kubwa ya "uchawi" wa frameworks za Java (Spring, JPA, JUnit).
Reflection — ukaguzi na uitishaji wa runtime
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();
