Tengo una clase y quiero encontrar todos sus campos públicos (no métodos). ¿Cómo puedo hacer esto?
¡Gracias!
java
reflection
ufk
fuente
fuente
Respuestas:
devuelve una matriz de todas las variables públicas de la clase.
getFields()
devuelve los campos en toda la jerarquía de clases. Si desea tener los campos definidos solo en la clase en cuestión, y no en sus superclases, usegetDeclaredFields()
y filtre lospublic
que tienen el siguienteModifier
enfoque:El
YourClassName.class
literal realmente representa un objeto de tipojava.lang.Class
. Consulte sus documentos para conocer métodos de reflexión más interesantes.La
Field
clase anterior esjava.lang.reflect.Field
. Puede echar un vistazo aljava.lang.reflect
paquete completo .fuente
https://docs.oracle.com/javase/tutorial/reflect/class/classMembers.html también tiene gráficos para localizar métodos y constructores.
fuente
Puede utilizar cualquiera de los dos según sus necesidades:
Para filtrar solo los campos públicos de la lista anterior (según el requisito), use el siguiente código:
fuente
Como lo mencionaron algunos usuarios, el siguiente código puede ayudar a encontrar todos los campos en una clase determinada.
Sin embargo, a continuación se muestra un enfoque más interesante:
Con la ayuda de la biblioteca de Jackson, pude encontrar todas las propiedades de clase de tipo String / integer / double y los valores respectivos en una clase Map. (¡ sin usar reflections api! )
fuente