出于一个应用需要,要访问父类的私有成员,研究了一下,这么实现:

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++ 就很难做到这点。

更多相关文章

  1. Android(安卓)属性: persist
  2. Android(安卓)电子罗盘开发
  3. Android中native_handle private_handle_t ANativeWindowBuffer
  4. android之List的空指针问题_List的初始化
  5. Android(安卓)代码名字-版本号-API级别-NDK版本对应关系
  6. activity-alias使用
  7. Android开发Android(安卓)studio之gradle打包apk重命名的方法
  8. Android数据存储(3)SQLite简介和简单的登录与注册源代码
  9. activity-alias的用法

随机推荐

  1. 学习C的第三天-要记住的ASCII码值
  2. JavaScript 程序员可以从C ++中学到什么[
  3. centos7 OpenSSL1.1.1i rpm自动打包升级
  4. 用 TypeScript 开发 Node.js 程序[每日前
  5. MAC地址表和ARP表分别是什么?
  6. 6道tomcat面试题,最后两道难倒我了
  7. ESXi GPU 直通
  8. RPA:如何给财务人员带来新机遇?
  9. 快速上手最新的 Vue CLI 3[每日前端夜话0
  10. 浏览器中的JavaScript:文档对象模型与 DOM