什么是反射

反射是指对于任何一个Class类,在运行的时候都可以直接得到这个类的全部成员
在运行的时候,可以直接得到这个类的构造器对象:Constructor
在运行时,可以直接得到这个类的成员变量对象:Field
在运行时,可以直接得到这个类的成员方法对象:Method
这种运行时动态获取类信息以及动态调用类中成分的能力称为语言的反射机制

反射的关键

反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分
image.png
这里的类对象并不是new出来的一个此种类的对象,而是这个类本身,它的类型是类类型
我们可以把类类型理解为人类,而类的对象我们理解为人
image.png

反射怎么获得对象

反射获得类对象

机器内部如何产生Class对象

image.png
JVM编译文件,产生class文件,在运行时在内存中产生Class对象

怎么通过API得到Class对象

1.Class c=Class.forName(“包名.类名”);其实就是类存放的相对路径
2.Class c=类名.class
3.Class c=对象.getClass();通过对象获得类类型

反射获得构造器对象

image.png
image.png
image.png

image.png

得到构造器对象是拿来干嘛的

image.png
image.png
image.png
权限被打开是暂时的只有一次
newInstance()方法返回的是Object类型,需要强制转换

反射获得成员变量对象

image.png
image.png
image.png
image.png

反射获得方法对象

image.png
image.png
image.png

反射的作用

image.png

绕过编译阶段为集合添加数据

image.png

image.png

通过框架的底层原理

image.png
image.png