从类中获取所有字段(甚至是私有字段和继承字段)
2022-08-31 13:05:50
我正在制作大学项目。
我需要从类中获取所有字段。甚至是私人和继承的。我试图获取所有声明的字段,然后转换为超类并重复。我的代码片段:
private void listAllFields(Object obj) {
List<Field> fieldList = new ArrayList<Field>();
while (obj != null) {
fieldList.addAll(Arrays.asList(obj.getClass().getDeclaredFields()));
obj = obj.getClass().getSuperclass().cast(obj);
}
// rest of code
但它不起作用。 转换后仍然是同一类(不是超类)。
我将不胜感激如何解决转换问题的任何帮助,或者如何以不同的方式检索这些字段。tmpObj
问题不在于获取字段的访问权限,而在于获取字段的名称!
我以这种方式管理它:
private void listAllFields(Object obj) {
List<Field> fieldList = new ArrayList<Field>();
Class tmpClass = obj.getClass();
while (tmpClass != null) {
fieldList.addAll(Arrays.asList(tmpClass .getDeclaredFields()));
tmpClass = tmpClass .getSuperclass();
}
// rest of code