Android,子类访问父类私有成员

news/2024/5/19 6:19:06 标签: Android, 反射, Java

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

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


http://www.niftyadmin.cn/n/818640.html

相关文章

面试官问:知道DDoS攻击吗?大概讲讲它的原理

目录 那 DDoS 攻击究竟是什么? 下面给一个更加形象点的例子,解释下DDoS攻击。 下面是SYN Flood进行DDoS攻击的实现原理 如何应对 DDoS 攻击? 高防服务器 黑名单 DDoS 清洗 CDN 加速 最近几次面试,喜欢问一个问题&#xff…

WPF Binding学习(三)

转自;http://blog.csdn.net/lisenyang/article/details/18312199 1.控件与控件间的双向绑定 WPF还支持控件作为数据源, <TextBox Name"txt_Source" Width"120" HorizontalAlignment"Left"></TextBox><TextBox Text"{Binding…

Qt Quick 简单教程

上一篇《Qt Quick 之 Hello World 图文详解》我们已经分别在电脑和 Android 手机上运行了第一个 Qt Quick 示例—— HelloQtQuickApp &#xff0c;这篇呢&#xff0c;我们就来介绍 Qt Quick 编程的一些基本概念&#xff0c;为创建复杂的 Qt Quick 应用奠定基础。版权所有 foruo…

Qt Quick 事件处理之信号与槽

前面两篇文章《QML 语言基础》和《Qt Quick 简单教程》中我们介绍了 QML 语言的基本语法和 Qt Quick 的常见元素&#xff0c;亲们&#xff0c;通过这两篇文章&#xff0c;您应该已经可以完成简单的 Qt Quick 应用了。接下来呢&#xff0c;哈&#xff0c;我们要介绍 Qt Quick 中…

Qt Quick事件处理之鼠标、键盘、定时器

在《Qt Quick 事件处理之信号与槽》中介绍了 QML 中如何使用内建类型的信号以及如何自定义信号&#xff0c;这次我们来看看如何处理鼠标、键盘、定时器等事件。这些时间在处理时&#xff0c;通常是通过信号来完成的。 鼠标事件处理桌面开发的话&#xff0c;难免要处理鼠标事件……

MyEclipse2016安装反编译插件

首先&#xff0c;下载插件 https://sourceforge.net/projects/jadclipse/所需要的jar包 下载完之后得到一个 net.sf.jadclipse_3.3.0.jar 然后&#xff0c;从http://varaneckas.com/jad/中下载jad文件我的是window版本的 把net.sf.jadclipse_3.3.0.jar拷到你的MyEclipse的插件…

Qt Quick 事件处理之捏拉缩放与旋转

上一篇《Qt Quick事件处理之鼠标、键盘、定时器》我们介绍了常见的鼠标、键盘、定时器的处理&#xff0c;鼠标、键盘都是电脑上我们最常使用的事件&#xff0c;这节我们来介绍 Android 智能手机上的一个非常重要的手势&#xff1a;捏拉手势。捏拉手势最早在苹果手机上得到应用&…

ASP.NET初识

一、简介 ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架 ASP.NET支持三种不同的开发模式&#xff1a;Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体) 二、Web Pages模式 围绕着单一的网页创建&#x…