Reflexión permite que un programa inspeccione y manipule clases, métodos y campos en tiempo de ejecución — incluso aquellos desconocidos en tiempo de compilación. Anotaciones adjuntan metadatos al código que las herramientas y frameworks leen (frecuentemente mediante reflexión) para impulsar el comportamiento. Juntas, potencian gran parte de la "magia" de los frameworks de Java (Spring, JPA, JUnit).
Reflexión — inspección e invocación en tiempo de ejecución
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();
