假设我有一个A类:
class A
{
private String value;
private B field;
public C otherField;
}
class C
{
private String otherValue;
}
class B
{
private String name;
}
现在,如果我做了一个A.class.getClasses(),那么得到一个带有一个元素的数组(一个是公共的,一个根据Class.java的javadoc说的有意义的数据)。
我的问题是:有没有办法获得一个类的公共+私有字段列表?
由于
答案 0 :(得分:1)
getClasses()
方法不是访问属于A
类的 Fields 的正确方法。您需要使用getDeclaredFields()
方法来访问表示类中字段的Field
个对象数组。在那里,您需要通过调用true
将字段的可访问性设置为setAccessible()
。通过查看Java Reflection API以及here
答案 1 :(得分:0)
您应该注意到,getDeclaredField只返回类中声明的类的字段。将不返回从超类继承的字段。要获取类的所有字段,必须迭代超类(使用Class.getSuperclass())。