如何遍历类的所有成员变量? 我用了反射,但是只能找到本类,还有父类的public成员,有什么办法能找到父类的private成员呢?this.getClass().getDeclaredFields();//本类成员this.getClass().getMethods();//所有public成员就是不知道怎么找父类的private... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java的API说明如下:public Field[] getDeclaredFields() throws SecurityException返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。public Method[] getDeclaredMethods() throws SecurityException返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。类初始化方法 <clinit> 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。看似可以列出private的属性和方法啊~~ Class superclass = Class.forName("").getSuperclass(); superclass.getDeclaredFields(); 楼上的,你这样确实找到了子类的所有字段,但是父类得没有找到。其实我想做的,就是比较2个对象是否相等,需要比较对象所有的字段,包括父类的,父类的父类的。所有public 和private都要。 public Field[] getDeclaredFields() throws SecurityException返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。======================看到了没?不包括继承的字段。我需要这个。。 lz说的比较对象相等,是==还是equals方法?如果是前者,Java中不支持==的重载,而==表示两个引用指向同一个对象;如果是后者,我印象中Java比较的是两个对象hash值,即hashCode()的返回值。看来你是想重写这个方法? 对,我确实是需要重写equals方法。两个对象的equals比较,对象需要比较本类的所有成员,父类的所有成员,包括private,不知道那位解决过这个问题。问题解决了分数可以再加,多谢。 求图片素材 调查贴:大家做开发的机器用什么操作系统? 请问怎样可以把一个字符串转变成一个二进制的流? 类的热拔插功能 抽象类我该怎么实力化它呢?例如要申明一个Image对象该怎么做? 请问怎么判断一个中文是否只属于GB2312的字而不是GBK中除2312外的汉字? 如何单独启动JBUILDER的JAVA帮助,谢谢 在JBuilder中,有一字符串过长,想换行但又不想用几个字符串相加,有没有其他办法? 老大们!觉得jcreator怎么样?评论一下!! 打包和image显示的关系??? 紧急求助,100轻松给你 我之前编译还没有错误,后来突然就有了~大家帮我看看错误~
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。public Method[] getDeclaredMethods() throws SecurityException
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。类初始化方法 <clinit> 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。
看似可以列出private的属性和方法啊~~
superclass.getDeclaredFields();
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段,包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。
======================
看到了没?不包括继承的字段。我需要这个。。