110 votes

Obtenir tous les noms de variables dans une classe

J'ai une classe et je veux trouver toutes ses classes. champs publics (pas de méthodes). Comment puis-je faire cela ?

1 votes

Vous devriez pouvoir le faire en utilisant API de réflexion .

3voto

Amit Kaneria Points 1935

Comme mentionné par quelques utilisateurs, le code ci-dessous peut aider à trouver tous les champs dans une classe donnée.

TestClass testObject= new TestClass().getClass();
Method[] methods = testObject.getMethods();
for (Method method:methods)
{
    String name=method.getName();
    if(name.startsWith("get"))
    {
        System.out.println(name.substring(3));
    }else if(name.startsWith("is"))
    {
        System.out.println(name.substring(2));
    }
}

Cependant, une approche plus intéressante est présentée ci-dessous :

Avec l'aide de la bibliothèque Jackson, j'ai pu trouver toutes les propriétés de classe de type String/integer/double, et les valeurs respectives dans une classe Map. ( sans utiliser l'api de réflexion ! )

TestClass testObject = new TestClass();
com.fasterxml.jackson.databind.ObjectMapper m = new com.fasterxml.jackson.databind.ObjectMapper();

Map<String,Object> props = m.convertValue(testObject, Map.class);

for(Map.Entry<String, Object> entry : props.entrySet()){
    if(entry.getValue() instanceof String || entry.getValue() instanceof Integer || entry.getValue() instanceof Double){
        System.out.println(entry.getKey() + "-->" + entry.getValue());
    }
}

1voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X