博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射例子
阅读量:6939 次
发布时间:2019-06-27

本文共 1154 字,大约阅读时间需要 3 分钟。

一、field.setAccessible()方法:

  setAccessible方法是干什么用的呢让我们来看一段代码吧:

public class User {    private String name;        public User(String name) {        this.name = name;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }        }
import java.lang.reflect.Field;public class Demo {    public static void main(String[] args) throws Exception {        Class clazz = User.class;        User u = new User("小明");        for(Field field: clazz.getDeclaredFields()){            System.out.println(field.isAccessible());    //这里的结果是false            field.setAccessible(true);            System.out.println(field.getName() + ":" + field.get(u));        }    }}

通过运行以上代码,我们发现  System.out.println(f.isAccessible())这一句打印结果是"false",从字面上理解是说该字段不能被访问

如果不写field.setAccessible(true);会抛出异常;

经过检查发现getName()这个方法并不抛异常,也就是是就算没有加f.setAccessible(true);也可以获得name,抛异常的是f.get(u);这句话

结论:当isAccessible()的结果是false时不允许通过反射访问该字段

当该字段时private修饰时isAccessible()得到的值是false,必须要改成true才可以访问

所以     f.setAccessible(true);得作用就是让我们在用反射时访问私有变量

上面最后的打印:

falsename:小明

 

 

二、

 

 

 

 

 

 

 

 

------------

转载于:https://www.cnblogs.com/tenWood/p/8596993.html

你可能感兴趣的文章
git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?...
查看>>
Kafka——使用java api进行pub & sub
查看>>
Android——Layout:RelativeLayout
查看>>
我的Java开发学习之旅------>Java使用Fork/Join框架来并行执行任务
查看>>
中国大数据争夺战已进入前所未有的高度
查看>>
王志海:充分重视是企业DLP成功的关键
查看>>
Vitalik Buterin:我们正处于 ICO 泡沫,很多人会亏钱
查看>>
湘雅医院黄伟红教授:希望AI专家多来医院讲课,把大数据思维渗到各个医疗环节...
查看>>
戴尔调查:企业忽视新威胁将导致损失
查看>>
WCF技术剖析之十一:异步操作在WCF中的应用(下篇)
查看>>
屏蔽Android PIE检测机制
查看>>
算是帮华仔写的撸JSON文件,然后发到我的REST接口的PYTHON代码
查看>>
Effective C++ 2e Item39
查看>>
iOS 10 中的 NSPersistentContainer
查看>>
什么是MTU?为什么MTU值普遍都是1500?
查看>>
云计算在数据中心工作中占据大半壁江山
查看>>
《Linux From Scratch》第三部分:构建LFS系统 第八章:让LFS系统可引导 - 8.3. Linux-3.19...
查看>>
云计算争夺战爆发 中国企业何时参战
查看>>
深入浅出https协议(ssl/tls)
查看>>
VC++ ADO编程入门简介
查看>>