@danLeon a jusqu'à présent l'idée la plus simple (ajout de toString
aux classes), en supposant que vous avez accès à Service
et Version
.
Je ne sais pas pourquoi vous pensiez à la réflexion, mais la seule chose à laquelle je peux penser est que vous voulez quelque chose qui fonctionnera avec n'importe quel objet ayant un seul attribut String
getter, et ensuite vous feriez quelque chose comme ceci (fou à mon avis, mais cela utilise la réflexion) :
Class clazz = list.get(0).getClass();
Method[] methods = clazz.getDeclaredMethods();
Method onlyStringGetter = null;
for (Method method: methods) {
String mName = method.getName();
if (mName.matches("get\w+") {
if (method.getReturnType().equals(String.class) {
if (onlyStringGetter != null) thrown new RuntimeException("Plus d'un getter String disponible");
onlyStringGetter = method;
}
}
}
if (onlyStringGetter == null) throw new RuntimeException("Aucun getter String trouvé pour la classe : " + clazz.getName());
List strings = new ArrayList();
for (Object singleStringAttribObj: list) {
// une certaine gestion d'exception est nécessaire pour ci-dessous
String result = (String)onlyStringGetter.invoke(singleStringAttribObj);
strings.add(result);
}
System.out.println(strings);
Je n'ai pas compilé ni essayé, mais c'est approximativement correct. Certainement une manipulation d'exception supplémentaire est requise