Java程序在计算机的三个阶段

Java程序经历编译阶段生成.class文件,然后通过Class类加载器加载到内存中形成Class对象,这个对象包含类的所有结构信息。反射机制允许我们在运行时通过Class对象实例化类并调用其方法。获取Class对象有三种方式:Class.forName(),类名.class,对象.getClass()。实例化可以通过构造器或Class对象的newInstance()方法完成。
摘要由CSDN通过智能技术生成

了解Java程序在计算机的三个阶段,就能更好的理解反射,为什么称之为"反射"呢?因为堆内存中的class对象,包含了类的完整结构信息,那我们通过这个class对象,就能实例化这个类,所以这个class对象就像是一面镜子,我们形象的称之为反射。

Java反射机制原理示意图

反射机制原理示意图

我们可以看到,Java程序在计算机中历经三个阶段,分别是编译阶段、Class类对象阶段和Runtime运行阶段,我们分别看一下
1)编译阶段
刚写的程序我们称之为源代码,经过Java自带的编译器Javac编译之后,会生成.class文件,注意此时还是在硬盘上。

2)Class类对象阶段
由ClassLoder类加载器将.class文件从硬盘加载到队内存中,并在堆内存中生成Class类对象这个阶段我们称之为Class类对象阶段。注意:这个Class类对象中包含了类的完整结构信息,成员变量、成员方法、构造方法都包含,相当于是该类的一面镜子。

补充:获取Class类对象的方法
1、Class.forName(fullClassPath) // 将字节码文件加载进内存,返回class对象
2、类名.class // 通过类名获取class
3、对象.getclass()// 通过对象获取class

3)Runtime运行阶段
运行阶段就是Class类对象经过反射进行了实例化,然后通过对象去调用方法什么的。

通过Class对象实例化的方式:
Object o = clazz.getDeclaredConstructor().newInstance() // 通过构造器实例化
Object o = cls.newInstance(); // 通过Class类对象实例化

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值