有什么问题:
final A a = new A();
for (final Field f : a.getClass().getDeclaredFields()) {
f.setAccessible(true);
System.out.println(f.get(a));
}
这将遍历所有字段A
并打印内容。List
有一个很好的toString
方法,所以你只需要toString
在 B 中有一个方法,它应该可以正常工作。
如果由于某种原因你不能这样做,那么递归就会起作用。然而,这很危险,除非您知道某处B
没有引用,否则您A
将陷入无限循环。
void printMethods(final Object input) {
for (final Field f : input.getClass().getDeclaredFields()) {
f.setAccessible(true);
if (Collection.class.isAssignableFrom(f.getType())) {
final Collection<?> c = (Collection<?>) f.get(input);
for (final Object obj : c) {
printMethods(obj);
}
} else {
System.out.println(f.get(input));
}
}
}