反射(Reflection)
反射使得静态的Java代码转化为准静态的语言
](https://i-blog.csdnimg.cn/blog_migrate/daacd9a57a187851e02d38f27ed04c9a.png)
1、Class类
①class对象只能由系统建立
②一个加载的类在JVM中只会有一个class实例
③class对象对应的是一个加载到JVM中的一个.class文件
④每个类的实例都会记得自己是由哪个class实例所生成的
⑤通过class可以完整地得到一个类中的所有被加载的结构
⑥class类是reflection的根源,针对任何你想动态加载、运动的类,唯有先获取相应的class对象
2、Class类的常用方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SV9IeY9F-1628179082753)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713120251313.png)]](https://i-blog.csdnimg.cn/blog_migrate/bf63f20e847fc9d154e2f4be22a34fea.png)
3、Class类的实例获取
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDilB76L-1630934615549)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713203242137.png)]](https://i-blog.csdnimg.cn/blog_migrate/cbee05e92d987576669d33e5a47c85d6.png)
4、拥有Class对象的类型
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xBwWhsvH-1628179082762)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713211508484.png)]](https://i-blog.csdnimg.cn/blog_migrate/11667b14b4341dd5d3da7f05a11d49b3.png)
5、Java内存结构图以及类的加载过程
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYTGydvD-1628179082764)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713215303299.png)]](https://i-blog.csdnimg.cn/blog_migrate/c2b077b25b80dad1fd29b4008a20740b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNe5DQhF-1628179082765)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713215407888.png)]](https://i-blog.csdnimg.cn/blog_migrate/8239cc5b500ae1ca9edcc3b7315b69e7.png)
1.加载
2.链接
3.初始化
6、类的初始化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8Hozvvn-1628179082765)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210714110956442.png)]](https://i-blog.csdnimg.cn/blog_migrate/2e63df957e2b5d795a71beb7420a3cde.png)
7、类加载器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sl0C2FBe-1628179082766)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210714122653424.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CY2AAgLE-1628179082767)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210714122718364.png)]](https://i-blog.csdnimg.cn/blog_migrate/a5280d1aa6319d0244a6d844ea087a3a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8nx0VTC-1628179082768)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715104404224.png)]](https://i-blog.csdnimg.cn/blog_migrate/be5655a96bc8aed58e801550d94c1659.png)
8、动态创建对象

9、setAccessible方法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xN9pHcvE-1628179082770)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715110440013.png)]](https://i-blog.csdnimg.cn/blog_migrate/4134039696002d76bb1ad12d7ca5c56b.png)
10、三种调用方式的性能对比
三种调用方式分别为:正常调用,正常反射调用,关闭检测的反射调用
结论:正常调用运行速度>关闭检测的反射调用运行速度>正常反射调用运行速度
11、通过反射获取泛型信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C55wZAi3-1628179082771)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715162333763.png)]](https://i-blog.csdnimg.cn/blog_migrate/28be858904bd50f47bdb443b15445ff8.png)
12、通过反射获取注解信息
补充:ORM对象关系映射
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OPEJUcmX-1628179082772)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715162659351.png)]](https://i-blog.csdnimg.cn/blog_migrate/3eb62c758d856cc5b899e16c858f7797.png)
PS:如果需要反射相关的代码可以留言,或者直接私信我,代码比较多有点懒得发了哈哈。
本文深入探讨了Java反射机制,包括Class类的作用、类的加载过程、动态创建对象及注解信息获取。通过反射,Java代码可以从静态变为准静态,增强了程序的灵活性。文章还比较了不同调用方式的性能,并指出正常调用最快。此外,讨论了泛型信息的反射获取和类加载器的重要性。
1220

被折叠的 条评论
为什么被折叠?



