如何通过反射,访问父类的private变量。_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 如何通过反射,访问父类的private变量。

如何通过反射,访问父类的private变量。

 2011/11/18 7:58:58  nanapoleon  http://nanapoleon.iteye.com  我要评论(0)
  • 摘要:FieldgetField(Stringname)返回已加载类声明的所有public成员变量的Field对象,包括从父类继承过来的成员变量,参数name指定成员变量的名称而FieldgetDeclaredField(Stringname)不能获取从父类那继承过来的成员变量所以,当AextendsB,我们如果仅仅this.getClass().getDeclaredFields();是不可以得到B的field,要这样:this.getClass().getSuperclass()
  • 标签:反射
Field getField(String name)返回已加载类声明的所有public成员变量的Field对象,包括从父类继承过来的成员变量,参数name指定成员变量的名称

而Field getDeclaredField(String name)不能获取从父类那继承过来的成员变量

所以,当A extends B,我们如果仅仅this.getClass().getDeclaredFields();是不可以得到B的field,要这样: this.getClass().getSuperclass().getDeclaredFields();

设置特定对象的field:
A a = new A();
Field f = A.class.getSuperclass().getDeclaredField("name");
f.setAccessible(true);
f.set(a, "nick");
String s = f.get(a);
print(s);
发表评论
用户名: 匿名