Avatar ·

¿Qué es la reflexión (Reflection) en Java y para qué sirve?

¡Hola a todos! Llevo unos seis meses aprendiendo Java, escribiendo aplicaciones simples y me encontré con el término "reflexión" (Reflection API). Leí la documentación de Oracle, pero no lo entendí del todo. Tengo una clase simple: ```java public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("Hola, soy " + name); } private void secretMethod() { System.out.println("¡Método secreto!"); } } ``` Entiendo que normalmente creamos un objeto con `new User("Iván", 25)` y llamamos a los métodos directamente. Pero, ¿para qué necesito obtener información sobre la clase durante la ejecución del programa? ¿Cuándo podría ser útil? Me desconcierta que la reflexión permita acceder a campos y métodos privados, e invocarlos. ¿Acaso esto no rompe la encapsulación? ¿Y hay alternativas a la reflexión? Explíquenme, por favor, con ejemplos simples: qué es la reflexión, por qué se necesita y cuándo se usa.