访问Java类上的私有类

时间:2013-09-08 21:48:09

标签: java reflection

假设我有一个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说的有意义的数据)。

我的问题是:有没有办法获得一个类的公共+私有字段列表?

由于

2 个答案:

答案 0 :(得分:1)

getClasses()方法不是访问属于A类的 Fields 的正确方法。您需要使用getDeclaredFields()方法来访问表示类中字段的Field个对象数组。在那里,您需要通过调用true将字段的可访问性设置为setAccessible()。通过查看Java Reflection API以及here

,可以获得更多信息

答案 1 :(得分:0)

您应该注意到,getDeclaredField只返回类中声明的类的字段。将不返回从超类继承的字段。要获取类的所有字段,必须迭代超类(使用Class.getSuperclass())。