我有一个 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 许可协议
4 回答1.8k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
4 回答2.4k 阅读
2 回答847 阅读✓ 已解决
2 回答1.4k 阅读
不,你需要自己写。这是一个在 Class.getSuperClass() 上调用的简单递归方法: