微信搜索《Java鱼仔》,每天一个知识点不错过
(一)每天一个知识点
反射的原理,反射创建类实例的三种方式是什么?
(二)回答
2.1 什么是反射
一段Java代码在计算机中的运行过程分为以下三个过程:
1.Source阶段:
javac在这一阶段会把java代码编译为class文件,保存在硬盘中,这个文件中保存着这个类的类名、成员名、构造方法、其他方法等。
2.Class阶段
Class阶段会把class字节码文件中的信息转化成class类对象,比如成员变量用Field[]保存,构造方法用Constructor[]保存,成员方法用Method[]保存。
3.Runtime阶段
在代码中通过new方法,根据第二个阶段的class对象创建出实际的对象。
这里的第二个阶段,将类的各个组成部分封装为其他对象就是反射机制。
2.2 反射创建类实例的三种方式是什么
获取Class对象有三种方式,分别对应于前面的三个阶段:
1.对应于第一个阶段的方法是将字节码文件加载进内存中:
class.forname("全类名");
2.第二个阶段已经生成了class类对象,因此方法如下:
类名.class;
3.第三个阶段生成了对象,方法如下:
对象.getclass();
注意: 同一个字节码文件(.class)在一次程序运行过程中只会被加载一次,通过以上三种方法创建的class对象是同一个。
关于反射机制,我专门写了一篇博客: