日期:2014-05-20  浏览次数:21086 次

如何遍历类的所有成员变量?
我用了反射,但是只能找到本类,还有父类的public成员,有什么办法能找到父类的private成员呢?

this.getClass().getDeclaredFields();//本类成员
this.getClass().getMethods();//所有public成员

就是不知道怎么找父类的private...

------解决方案--------------------
Java的API说明如下:

public Field[] getDeclaredFields() throws SecurityException
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。

public Method[] getDeclaredMethods() throws SecurityException
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。类初始化方法 <clinit> 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。


看似可以列出private的属性和方法啊~~
------解决方案--------------------
要用递归来找。