J'ai une classe et je veux trouver toutes ses classes. champs publics (pas de méthodes). Comment puis-je faire cela ?
Réponses
Trop de publicités?
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());
}
}
- Réponses précédentes
- Plus de réponses
1 votes
Vous devriez pouvoir le faire en utilisant API de réflexion .