反射机制原理的深度理解2017-12-26

首先我们编写person.java文件如下:

反射机制原理的深度理解2017-12-26_第1张图片

然后创建测试反射机制的类

反射机制原理的深度理解2017-12-26_第2张图片

原理解析:

要理解反射机制的实现过程,首先要明白几个知识点

如图1中Person.java是一个java的原文件,原文件经过编译会得到一个Person.class的二进制文件,然后类加载器ClassLoader加载 生成的Person.class 到JVM

在jvm中就会生成一个与Person.class对应的Class类型的文件,这个文件中有class文件中的属性,方法,注解,构造方法等Person.class的元信息。我们个这个文件起了对象名叫clazz.

所以可以通过创建Class类型的对象clazz(clazz是我们自己命名的),clazz就是元信息文件的对象,使用该对象调用newInstance()就能创建出一个Person类型的对象,同理也可以通过clazz来创建出Person类中的其它成员(方法,构造方法,属性等)

创建出的方法way,就可以通过关键字invoke来传入对象作为参数来执行,因为方法的执行,一定是通过对象来调用的。所以必须要有对象这个参数的传入。


反射机制原理的深度理解2017-12-26_第3张图片

工作真实环境应用:

三大框架底层全部是基于反射机制实现的。xml配置类的唯一标识syn.reflection.study.Person。

比如有一个付款的接口PayInterface,我们的付款方法是有微信,支付宝,银联支付等,当我们付款的时候支付宝付款的类为AliPayImpl,并且AliPayImpl implements PayInterface

当我们点击支付宝支付的时候

其实后台就会有

String payImpl ="syn.study.AliPayImpl"

传到

Class.newInstance(payImpl )

就会动态创建对象了。也就是通过发射来在程序运行过程中创建对象,而不是事先new一个出来。

你可能感兴趣的:(反射机制原理的深度理解2017-12-26)