Reflection ایک پروگرام کو runtime پر classes، methods، اور fields کو inspect اور manipulate کرنے دیتا ہے — یہاں تک کہ وہ بھی جو compile time پر معلوم نہ ہوں۔ Annotations کوڈ میں metadata منسلک کرتے ہیں جو tools اور frameworks پڑھتے ہیں (اکثر reflection کے ذریعے) تاکہ behavior کو چلایا جا سکے۔ مل کر یہ Java کے framework "magic" کا زیادہ تر حصہ چلاتے ہیں (Spring، JPA، JUnit)۔
Reflection — runtime inspection اور 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();
