1
A
回答
1
getDeclaredFields()返回由类而不是超类声明的字段。
返回一个Field对象数组,该对象数组反映了由此Class对象表示的类或接口声明的所有字段 。这 包括公共,受保护,默认(包)访问和专用 字段,但不包括继承字段。
使用getFields方法检索由类和超类声明的字段。
具体地,如果该Class对象表示一个类,则此方法返回 这个类的公共字段和它的所有超
读Java Class以获取更多信息的。
0
您应该使用Class#getSuperclass()访问类的超类,并使用Class#getDeclaredFields()获取其字段,重复(递归)直到您到达Object或您希望停止的选择类。
下面是一些示例代码:
@Test
public void getDeclFieldsIncludingBase() {
List<Field> fields = new ArrayList<>();
getDeclFieldsIncludingBase(B.class, fields);
for(Field f : fields) {
System.out.println(f.getName());
}
}
private void getDeclFieldsIncludingBase(Class<?> cl, List<Field> fields) {
Field[] declaredFields = cl.getDeclaredFields();
for(Field f : declaredFields) {
fields.add(f);
}
Class<?> superclass = cl.getSuperclass();
if(! Object.class.equals(superclass)) {
getDeclFieldsIncludingBase(superclass, fields);
}
}
实施例:
public class A {
int a;
}
和
public class B extends A {
int b;
}
输出应该
b
a
相关问题
- 1. 在运行时通过反射获取通用字段类型
- 2. 反射通用获取字段值
- 3. 如何在支持字段存在时通过反射来获取类字段?
- 4. 使用反射获取使用超类的子类字段?
- 5. 通过反射获取XmlRootAttribute.ElementName
- 6. 通过反射获取Java字段,但不是通过字符串名称获取Java字段
- 7. 如何通过反射获取对象中的字段?
- 8. 无法通过反射来获取字段值hibernate JPA + GF 4
- 9. 获取与注释,字段列表通过使用反射
- 10. 通过具有反射C的属性获取私有字段#
- 11. 如何通过反射属性获取变量/字段名称?
- 12. Java反射 - 通过类名称字符串获取级别
- 13. 通过反射投射字段到Java中的数组类型
- 14. 通过C#中的反射获取对某些类字段的引用
- 15. 通过反射获取特定的公共字段(对于所有父类)
- 16. 使用反射获取字段值
- 17. 通过反射获取阴影方法
- 18. 通过反射获取事件参数
- 19. 通过反射获取接口属性
- 20. Java通过反射获取参数值
- 21. 通过反射获取在PHP
- 22. ObservableArrayList:如何通过反射获取通用类型?
- 23. 如何通过反射获得类的私有字段及其父类?
- 24. 通过反射获取.Net对应类型的C#类型
- 25. C#反射类字段
- 26. 获得通过反射
- 27. 获得通过反射
- 28. 通过反射修改不可变的scala类字段
- 29. 如何通过使用反射的方法传递类字段
- 30. Java。如何通过反射获得不可空字段?
请分享您用于从poi导出的代码。很有可能你没有关闭相同的东西。 – Joe2013 2013-03-11 09:14:49
分享一些代码会给更好的主意 – 2013-03-11 13:12:13
文件是否保存为只读?工作表是否受到保护以禁止此类修改? – shahkalpesh 2013-03-11 15:43:48