Observo que en Java Reflection API hay dos métodos diferentes para invocar constructores: el método getDeclaredConstructors
/getConstructors
. Aunque los documentos de Java son ligeramente diferentes (getDeclaredConstructors
parece implicar que devuelve TODOS los constructores, en lugar de los públicos), no está claro por qué la API admite explícitamente estos dos métodos diferentes.¿Cuál es la diferencia entre getDeclaredConstructors y getConstructors en Class API?
Más importante aún, me pregunto: ¿cuándo un método preferible a otra si estamos invocando clases dinámicamente? Por ejemplo, ¿cuál es el propósito de acceder a un constructor privado?
y mediante el uso de constructor.setAccessible (true), puede llamar de forma reflexiva a los constructores que son privados. – MeBigFatGuy
Si bien esta respuesta es correcta, hay una pequeña advertencia. El compilador proporciona automáticamente un constructor público predeterminado (sin argumento) para cualquier clase que no defina explícitamente ningún constructor. 'getConstructors' no devolverá este constructor predeterminado, pero' getDeclaredConstructors' sí. – neXus