Reflection επιτρέπει σε ένα πρόγραμμα να επιθεωρεί και να χειρίζεται κλάσεις, μεθόδους και πεδία κατά την εκτέλεση — ακόμα και αυτές που είναι άγνωστες κατά τη μεταγλώττιση. Annotations συνδέουν μεταδεδομένα στον κώδικα που εργαλεία και frameworks διαβάζουν (συχνά μέσω reflection) για να οδηγήσουν τη συμπεριφορά. Μαζί τους τροφοδοτούν πολλά από τα Java framework "μαγικά" (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();
