@danLeon 到目前为止有最简单的想法(添加toString
到类中),假设您可以访问Service
and Version
。
我不确定你为什么要考虑反射,但我唯一能想到的是你想要的东西可以与任何具有单个属性String
getter 的对象一起使用,然后你会做这样的事情(疯狂的 IMO,但它使用反射):
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("More than one String getter available");
onlyStringGetter = method;
}
}
}
if (onlyStringGetter == null) throw new RuntimeException("No String getter found for class: " + clazz.getName());
List<String> strings = new ArrayList<String>();
for (Object singleStringAttribObj: list) {
// some exception handling needed for below
String result = (String)onlyStringGetter.invoke(singleStringAttribObj);
strings.add(result);
}
System.out.println(strings);
我没有编译或尝试过,但这大约是正确的。肯定需要一些额外的异常处理