出于一个应用需要,要访问父类的私有成员,研究了一下,这么实现:
public static Object get(Object instance, String variableName)
{
Class targetClass = instance.getClass().getSuperclass();
// YourSuperClass 替换为实际的父类名字
YourSuperClass superInst = (YourSuperClass)targetClass.cast(instance);
Field field;
try {
field = targetClass.getDeclaredField(variableName);
//修改访问限制
field.setAccessible(true);
// superInst 为 null 可以获取静态成员
// 非 null 访问实例成员
return field.get(superInst);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
把上面的 get() 方法放到子类中,使用也很简单,传入 this 指针,传入成员变量的名字。比如:
get(this, "mPrivateMember");
Java 的反射机制果然强大,用 C++ 就很难做到这点。
分享到:
相关推荐
有关子类和父类。A是子类,Teacher是父类。A是Teacher 的一种(子类)会继承父类李非私
java训练题目 编写程序实现子类对父类构造方法的引用?
在本文里我们给大家分享一篇关于Python 子类继承父类构造函数的相关知识点内容,需要的朋友们跟着学习下。
java子类重写父类的方法.doc
继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的。 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数,...
java中的继承(子类调用父类构造方法还不懂).doc
利用C#反射将子类舍弃多余的属性转换为父类,用途比较少。
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 父类可以完成的任务,子类对象也可以完成 子类可以调用父类Person p= new student(); 声明父类变量,实例化子类...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication6 { public class employee { #region ...
窗体传值,或者是子类向父类传值。主窗体通过重写拦截消息方法,以接收子类传来的值。 窗体传值,或者是子类向父类传值。主窗体通过重写拦截消息方法,以接收子类传来的值。
Java的子类调用父类的构造方法.pdf
主要介绍了Java编程关于子类重写父类方法问题的理解,分享了有关子类重写父类的实例,具有一定参考价值,需要的朋友可以了解下。
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
JAVA 子类继承父类范例,2个子类继承同一个父类,完整代码,下载粘贴到project中可以直接运行
类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。 在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。 ...
c++里,指针和引用是很重要的概念,这个程序不仅对指针和引用做了说明、使用,而且对子类不能继承父类虚函数也做了说明。
父类赋值给子类的一个小方法,仅供学习参考...
NULL 博文链接:https://1819027025.iteye.com/blog/2256350
java 子类对象赋值给父类对象的使用,包括代码及详解,个人笔记
因为子类可以访问父类的 比如说公有属性,那属性就会去访问 父类的私有字段,如果不能继承父类的私有成员,那么这个公有属性就访问不到 父类的私有成员了。) base关键字 函数的重写(OverRide):子类可以覆盖父类的...