Java基础之反射(Reflection)

本文深入探讨了Java反射机制,包括Class类的作用、类的加载过程、动态创建对象及注解信息获取。通过反射,Java代码可以从静态变为准静态,增强了程序的灵活性。文章还比较了不同调用方式的性能,并指出正常调用最快。此外,讨论了泛型信息的反射获取和类加载器的重要性。
摘要由CSDN通过智能技术生成

反射(Reflection)

反射使得静态的Java代码转化为准静态的语言

在这里插入图片描述](https://img-blog.csdnimg.cn/22b641c05b3247edb0b92018089ae4e3.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)]

3、Class类的实例获取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDilB76L-1630934615549)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713203242137.png)]

4、拥有Class对象的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xBwWhsvH-1628179082762)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713211508484.png)]

5、Java内存结构图以及类的加载过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYTGydvD-1628179082764)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713215303299.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hNe5DQhF-1628179082765)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210713215407888.png)]

1.加载

2.链接

3.初始化

6、类的初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8Hozvvn-1628179082765)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210714110956442.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)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8nx0VTC-1628179082768)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715104404224.png)]

8、动态创建对象

在这里插入图片描述

9、setAccessible方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xN9pHcvE-1628179082770)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715110440013.png)]

10、三种调用方式的性能对比

三种调用方式分别为:正常调用,正常反射调用,关闭检测的反射调用

结论:正常调用运行速度>关闭检测的反射调用运行速度>正常反射调用运行速度

11、通过反射获取泛型信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C55wZAi3-1628179082771)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715162333763.png)]

12、通过反射获取注解信息

补充:ORM对象关系映射

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OPEJUcmX-1628179082772)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210715162659351.png)]

PS:如果需要反射相关的代码可以留言,或者直接私信我,代码比较多有点懒得发了哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值