反射的原理是什么,反射创建类实例的三种方式是什么?

微信搜索《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对象是同一个。

关于反射机制,我专门写了一篇博客:

java核心基础之java反射机制详解

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页