【0004】JDK源码分析之如何反射类的私有属性和私有方法

>>强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

【0004】JDK源码分析之如何反射类的私有属性和私有方法

本文将介绍如何反射类的私有属性和私有方法。

本文大纲:

       一、为什么要反射私有属性和私有方法?

       二、如何反射呢?

       三、案例分析


一、为什么要反射私有属性和方法?

你或许会疑问,类的私有的属性和私有方法可以被反射吗?答案是:可以。但是一般情况下不行的,需要修改类的访问检查,由于安全问题默认是不能访问的。很多情况下,我们需要反射私有属性和方法,比如序列化对象的时候,Spring的反射注入等。反射机制可以简化我们客户端的编码,使得代码更加简洁,易于拓展。


二、如何反射呢?

反射使用的是java.lang.reflect包下的类,如Field、Method等类,这些封装了操作类的常用方法。如果要反射私有属性和私有方法需要设置setAccessible(true),取消访问检查。


三、案例分析

毋容置疑,我们的案例就是反射一个类的私有属性和方法,比如我们有一个Cat的类,类有一个私有的String类型的属性、一个私有的方法以及一个取得私有属性的值的公开方法(用于校验是否反射注入成功),代码如下:


【0004】JDK源码分析之如何反射类的私有属性和私有方法

接下来我们编写单元测试进行测试,单元测试类如下:

【0004】JDK源码分析之如何反射类的私有属性和私有方法

【0004】JDK源码分析之如何反射类的私有属性和私有方法

单元测试类的运行结果如下图所示:

1、反射私有属性的运行结果

【0004】JDK源码分析之如何反射类的私有属性和私有方法

2、反射私有方法的运行结果如下图所示,由下图可知,反射并调用私有方法成功。

【0004】JDK源码分析之如何反射类的私有属性和私有方法

四、总结

         本文十分简短,主要描述了一个反射私有属性和私有方法的小案例。在平时开发的时候,或者很少使用到,但是在设计框架或阅读框架的时候,则经常会看到。感谢你的耐心阅读,谢谢。

始发于微信公众号: Java框架源码分析