0004JDK源码分析之如何反射类的私有属性和私有方法
Posted Java框架源码分析
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0004JDK源码分析之如何反射类的私有属性和私有方法相关的知识,希望对你有一定的参考价值。
本文将介绍如何反射类的私有属性和私有方法。
本文大纲:
一、为什么要反射私有属性和私有方法?
二、如何反射呢?
三、案例分析
一、为什么要反射私有属性和方法?
你或许会疑问,类的私有的属性和私有方法可以被反射吗?答案是:可以。但是一般情况下不行的,需要修改类的访问检查,由于安全问题默认是不能访问的。很多情况下,我们需要反射私有属性和方法,比如序列化对象的时候,Spring的反射注入等。反射机制可以简化我们客户端的编码,使得代码更加简洁,易于拓展。
二、如何反射呢?
反射使用的是java.lang.reflect包下的类,如Field、Method等类,这些封装了操作类的常用方法。如果要反射私有属性和私有方法需要设置setAccessible(true),取消访问检查。
三、案例分析
毋容置疑,我们的案例就是反射一个类的私有属性和方法,比如我们有一个Cat的类,类有一个私有的String类型的属性、一个私有的方法以及一个取得私有属性的值的公开方法(用于校验是否反射注入成功),代码如下:
接下来我们编写单元测试进行测试,单元测试类如下:
单元测试类的运行结果如下图所示:
1、反射私有属性的运行结果
2、反射私有方法的运行结果如下图所示,由下图可知,反射并调用私有方法成功。
四、总结
本文十分简短,主要描述了一个反射私有属性和私有方法的小案例。在平时开发的时候,或者很少使用到,但是在设计框架或阅读框架的时候,则经常会看到。感谢你的耐心阅读,谢谢。
以上是关于0004JDK源码分析之如何反射类的私有属性和私有方法的主要内容,如果未能解决你的问题,请参考以下文章
第43题JAVA高级技术-反射实战3(动态设置类的私有属性)