Reflective反射机制解析

目录反射:框架设计的灵魂1、类的三种获取方式(1)、Class.forName("全类名")(2)、类名.class(3)、对象.getClass()1.1、三种类获取方法的相同之处Field成员变量的获取Constructor构造方法的获取Merhod类里面方法的获取最后来个案例融会贯通一下吧反射:框架设计的灵魂 反射机制:将类(Class<T>)的各个组成部分(域(Field),构造方法(Constructor<...
摘要由CSDN通过智能技术生成

目录

反射:框架设计的灵魂

1、类的三种获取方式

(1)、Class.forName("全类名")

 (2)、类名.class

 (3)、对象.getClass()

1.1、三种类获取方法的相同之处

Field成员变量的获取

 Constructor构造方法的获取

Merhod类里面方法的获取 

最后来个案例融会贯通一下吧


反射:框架设计的灵魂

        反射机制:将类(Class<T>的各个组成部分(域(Field)构造方法(Constructor<T>)方法(Method))封装为其他对象

        功能:

  • 在运行时分析类的能力;
  • 在运行时查看对象;
  • 实现通用的数组操作代码;
  • 可以解耦;

        为了方便理解,我们先看一下Java程序运行的三个阶段:

        第一个阶段:源码阶段,源码通常保存在硬盘上,所以第一阶段就是从硬盘上读取字节码。

        第二个阶段:内存阶段,要知道一个程序运行,并非是直接在硬盘上运行的(否则要内存条何用),而是在内存里运行的。所以第二个阶段就是通过类加载器从硬盘上把类加载到内存里。

        第三个阶段:运行阶段,这个阶段才是我们所熟悉的运行阶段。对象的创建以及方法的执行就是在这个阶段(如何运行的就要去看计算机的操作系统原理了)

而类的三种获取方法也对应这三个不同的阶段。

 

1、类的三种获取方式

        (1)、Class.forName("全类名")

        (2)、类名.class

        (3)、对象.getClass()

类的三种获取方式
方式 阶段 异同
Class.forName("全类名") 源码阶段

         将字节码文件加载进内存(源码阶段),返回Class对象,全类名通常定义在配置文件中,便于利反射机制生成类对象,加载类。

        这个方法只有在forName是类名或者接口名才能使用,否则将抛出一个chekedException。所以无论什么时候,使用forName时都应该提供一个异常处理器

类名.class 内存阶段

类加载进内存后从类名获取(内存阶段

        想想为什么是.class而不是.class()?

        通常  类名.属性  代表什么?类的静态属性,直接通过类名调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值