Android,子类访问父类私有成员
16lz
2021-01-25
出于一个应用需要,要访问父类的私有成员,研究了一下,这么实现:
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++ 就很难做到这点。
更多相关文章
- Android(安卓)属性: persist
- Android(安卓)电子罗盘开发
- Android中native_handle private_handle_t ANativeWindowBuffer
- android之List的空指针问题_List的初始化
- Android(安卓)代码名字-版本号-API级别-NDK版本对应关系
- activity-alias使用
- Android开发Android(安卓)studio之gradle打包apk重命名的方法
- Android数据存储(3)SQLite简介和简单的登录与注册源代码
- activity-alias的用法