Reflection საშუალებას აძლევს პროგრამას გაიყოს და შეცვალოს კლასები, მეთოდები და ველები runtime-ში — თუნდაც ისეთი, რომელიც უცნობი იყო კომპილაციის დროს. Annotations აკავშირებს მეტადეტებს კოდს, რომელსაც ხელსაწყოები და ფრეიმვორკები კითხულობენ (ხშირად reflection-ის მეშვეობით) ქცევის სამართავად. ერთად მათ უძღვებენ Java-ს ფრეიმვორკის უმეტესი "ჯადოსნობა" (Spring, JPA, JUnit).
Reflection — 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();
