Eu tenho uma classe e quero encontrar todos os seus campos públicos (não métodos). Como posso fazer isso?
Obrigado!
java
reflection
ufk
fonte
fonte
Respostas:
retorna uma matriz de todas as variáveis públicas da classe.
getFields()
retornar os campos em toda a hereditariedade da classe. Se você deseja ter os campos definidos apenas na classe em questão, e não em suas superclasses, usegetDeclaredFields()
e filtrepublic
aqueles com a seguinteModifier
abordagem:O
YourClassName.class
literal realmente representa um objeto do tipojava.lang.Class
. Verifique seus documentos para métodos de reflexão mais interessantes.A
Field
classe acima éjava.lang.reflect.Field
. Você pode dar uma olhada nojava.lang.reflect
pacote completo .fonte
https://docs.oracle.com/javase/tutorial/reflect/class/classMembers.html também possui gráficos para localizar métodos e construtores.
fonte
Você pode usar qualquer um dos dois de acordo com sua necessidade:
Para filtrar apenas os campos públicos da lista acima (com base no requisito), use o código abaixo:
fonte
Conforme mencionado por poucos usuários, o código abaixo pode ajudar a encontrar todos os campos em uma determinada classe.
No entanto, uma abordagem mais interessante está abaixo:
Com a ajuda da biblioteca Jackson, consegui encontrar todas as propriedades da classe do tipo String / inteiro / duplo e respectivos valores em uma classe Map. ( sem usar reflexões api! )
fonte