Reflection ले एक प्रोग्रामलाई runtime मा classes, methods, र fields को निरीक्षण र हेरफेर गर्न अनुमति दिन्छ — यहाँ कि compile time मा अज्ञात भएका पनि। Annotations ले कोडमा metadata जोडिन्छ जो tools र frameworks ले (अक्सर reflection माध्यमबाट) पढ्छन् र व्यवहार चलाउन। सँगै तिनीहरूले Java को अधिकांश framework "magic" (Spring, JPA, JUnit) को शक्ति दिन्छन्।
Reflection — runtime निरीक्षण र invocation
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();
