什么时反射
反射就是在运行的时候才知道到操作的对象是什么,并且可以获得该对象的全部信息、方法、构造等。
比如说有个对象Test,该对象有个方法a,那我们需要用到方法a 怎么办,实例化对象调用方法
图(1)
下面看反射的调用
图(2)
图1知道要运行的类,而图2是在运行时通过字符串才得知要运行的类,即在一开始并不知道要初始化的类对象是什么,自然也无法使用 new 关键字来创建对象了。反射就是像图2那样在运行时刻动态加载类,从反射中获得类对象,进而得到需要的类信息。
这也就是静态加载类和动态加载类
静态加载类:也就是编译时刻加载类,new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类。
动态加载类:也就是运行时刻加载类,通过动态加载类,在运行时加载。
动态加载类比较适用于大型项目,和框架中,我们看spring的配置文件就能看出来,每个bean都是动态加载,只有在你用到的时候才会加载。