步步UP1️⃣——反射概述

框架设计的灵魂——反射

在我们平时的项目开发过程中,基本上很少会直接使用到反射机制,但这不能说明反射机制没有用,实际上有很多设计、开发都与反射机制有关,例如模块化的开发,通过反射去调用对应的字节码;动态代理设计模式也采用了反射机制,还有我们日常使用的 Spring/Hibernate 等框架,也是利用CGLIB 反射机制才得以实现

框架

我相信只要是有一点点开发经历的人都用过框架它是一种半成品软件,我们可以在框架的基础上来进行开发,使用框架最大的优点就是简化代码,可以为你省去很多繁琐的过程比如你要在控制台输入一个字符串肥学是不是要用

java.util.Scanner

这个包,而不是从底层去开始写怎么从控制台进入内存这个过程,只需要

Scanner sc=new Scanner(system,in);
String temp=sc.next();

简单两行就把事情解决了,我想这就是框架最直接的好处吧




反射

简单说:将类的各个部分封装为其他对象,这种过程就称为反射下面下面我们对句话详解一下。
请添加图片描述
解释上图

  • 第一个阶段出要是将Java文件生成字节码文件.class文件,字节码文件主要放的是变量和构造和普通方法。但是这个时候两个文件仍然在硬盘上面称为源代码阶段。
  • 第二个阶段把字节码文件通过类加载器加载进内存(因为不到内存无法运行,哈哈),进入内存后为了能够描述这个Person.class这个字节码文件Java本身有一个对象叫Class对象这个对象是用来描述所有字节码文件的共有属性的(比如上面提到的变量,构造和普通方法),又因为这三部分是不同的东西有不同的功能,所以我们又将这三部分封装成对象假如这三个对象我们分别用 variateconstructor,和Method来代替在这里插入图片描述

variate为例person的变量有很多个,我们把变量都给存进variate[]数组里面。生成class类对象。其他同理。
我们在回过神来看反射的概念将类的各个部分封装为其他对象,这种过程就称为反射结合上面实例就是将Person里面的 Fieldconstructor,和Method封装成了各个class对象。

反射的优点

1·可以在程序的运行中,操作这些对象。
例子:
在这里插入图片描述
如图我建立了一个数组a当我使用a的时候软件的快捷提示功能给我提供了很多选择,其实这些选择就是Method封装成的对象,然后将对象里的Method[]数组一个一个读了出来而且常用的权重大排在前面。
2· 可以解耦,提高程序的可扩展性。

缺点

性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多

那么反射是怎么在程序里面一步步得到的呢???
往下看我们一步步揭开它的面纱。💪💪💪💪

详情请关注:JavaWeb进厂必刷

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥学

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值