我试图从我的域类中获取所有变量,并将它们全部输出到单个字符串中,但是我的大多数类中都有一个列表。我的代码现在只输出列表,而不是其内容。
public static List<Field> getInheritedPrivateFields(Class<?> type) {
List<Field> result = new ArrayList<Field>();
Class<?> i = type;
while (i != null && i != Object.class) {
for (Field field : i.getDeclaredFields()) {
if (!field.isSynthetic()) {
result.add(field);
}
}
i = i.getSuperclass();
}
String names = result.stream().map(e->e.getName()).collect(Collectors.joining(", "));
String types = result.stream().map(e->e.getType().getSimpleName().toUpperCase()).collect(Collectors.joining(", "));
System.out.println(names + ", " + types);
return result;
}
当前输出
count, facility, technology, component, testStats, INT, STRING, STRING, STRING, LIST
我需要扩展列表以使其输出
facility, technology, name, count, test, failCriteria, description, target
STRING, STRING, STRINNG, INTEGER, STRING, STRING, STRING, REAL
我现在的想法是,在我的for循环中,我可以添加一个IF语句来检查该字段是否为List,然后如果要检查参数是否为true并在该类上再次循环,以便将其输出所有连接到初始类的变量。
有没有一种方法可以在List中获取类的值?还是有更好的方法来做到这一点?