Reflection يسمح لبرنامج أن يفحص ويتعامل مع الفئات والطرق والحقول في وقت التشغيل — حتى تلك غير المعروفة في وقت التجميع. Annotations تضع بيانات وصفية على الكود التي تقرأها الأدوات والأطر (غالباً عبر reflection) لدفع السلوك. معاً يشغلان الكثير من "سحر" أطر Java (Spring و JPA و JUnit).
Reflection — الفحص والاستدعاء في وقت التشغيل
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();
