打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
反射 -- 成员变量
通过反射获取成员变量,以及对应的值。
下面看一个需求
1.定义一个RefelectPoint对象,里面有两个变量,private x,public y.
 2. new一个RefelectPoint对象,初始化这个对象,获取成员变量Y初始化时赋的值,通过反射实现

 RefelectPoint.java 类
 
 RefelectTest.java测试类
 主要看一下注释:思考如何获取成员变量,如何获取某个对象的该成员变量的值

下面我们用同样的方法,获取成员变量x的值。
 
 报错了:没有这个成员变量,为什么?
因为x是private的。而getField()方法获取的是public类型的成员变量。
那有没有办法获取他的私有变亮呢?答案是有的:使用get DeclareField()方法获取成员变量
 
 
这时候,不报找不到成员变量错误了,报Exception in thread "main" java.lang.IllegalAccessException: Class com.RefelectTest can not access a member of class com.RefelectPoint with modifiers "private"  不能通过发射的方式接收RefelectPoint中“private”类型的成员变量
什么意思?因为是私有的,所以不让访问。那有没有办法访问呢?有。既然你有钱,在我面前又晃来晃去不给我,我又想要,那怎么办?只有用暴力的方式了,强抢。
使用fieldX.setAccessible(true);强制设定fieldX这个成员变量是可以访问的
 
 这种方式有一个名字叫:暴力反射。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java中static变量有什么作用?一般用在什么场合?
java修饰符大全详解
Java内部类使用的四点建议 - 51CTO.COM
【Java】基础19:修饰符介绍
深入总结Java中多态实现机制
Java笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服