decir te alguna manera tengo una referencia de objeto a partir de una otra clase:¿Cómo obtener los nombres de los parámetros de los constructores de un objeto (reflejo)?
Object myObj = anObject;
Ahora puede obtener la clase de este objeto:
Class objClass = myObj.getClass();
Ahora, puedo conseguir todos los constructores de esta clase:
Constructor[] constructors = objClass.getConstructors();
Ahora, puede recorrer cada constructor:
if (constructors.length > 0)
{
for (int i = 0; i < constructors.length; i++)
{
System.out.println(constructors[i]);
}
}
Esto ya me está dando un buen resumen del constructor, por ejemplo, se muestra una prueba pública constructor (String paramName) como prueba pública (java.lang.String)
En vez de darme el tipo de clase sin embargo, Quiero obtener el nombre del parámetro ... en este caso "paramName". ¿Como podría hacerlo? Intenté lo siguiente sin éxito:
if (constructors.length > 0)
{
for (int iCon = 0; iCon < constructors.length; iCon++)
{
Class[] params = constructors[iCon].getParameterTypes();
if (params.length > 0)
{
for (int iPar = 0; iPar < params.length; iPar++)
{
Field fields[] = params[iPar].getDeclaredFields();
for (int iFields = 0; iFields < fields.length; iFields++)
{
String fieldName = fields[i].getName();
System.out.println(fieldName);
}
}
}
}
}
Lamentablemente, esto no me está dando el resultado esperado. ¿Alguien podría decirme cómo debo hacer esto o qué estoy haciendo mal? ¡Gracias!
Esto es posible a través de la reflexión en ** Java 8 **, vea [esta respuesta SO] (http://stackoverflow.com/a/21455958/573057) - encontrado leyendo la documentación en [paranamer] (https: //github.com/paul-hammant/paranamer) de la respuesta de Duncan McGregor a continuación. – earcam