我有一个 Java 对象“ChildObj”,它是从“ParentObj”扩展而来的。现在,是否可以使用 Java 反射机制检索 ChildObj 的所有属性名称和值,包括继承的属性?
Class.getFields 给了我公共属性的数组, Class.getDeclaredFields 给了我所有字段的数组,但它们都不包括继承的字段列表。
还有什么方法可以检索继承的属性吗?
原文由 Veera 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 Java 对象“ChildObj”,它是从“ParentObj”扩展而来的。现在,是否可以使用 Java 反射机制检索 ChildObj 的所有属性名称和值,包括继承的属性?
Class.getFields 给了我公共属性的数组, Class.getDeclaredFields 给了我所有字段的数组,但它们都不包括继承的字段列表。
还有什么方法可以检索继承的属性吗?
原文由 Veera 发布,翻译遵循 CC BY-SA 4.0 许可协议
public static List<Field> getAllFields(Class<?> type) {
List<Field> fields = new ArrayList<Field>();
for (Class<?> c = type; c != null; c = c.getSuperclass()) {
fields.addAll(Arrays.asList(c.getDeclaredFields()));
}
return fields;
}
原文由 Esko Luontola 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
不,你需要自己写。这是一个在 Class.getSuperClass() 上调用的简单递归方法: