首先简单介绍下java反射的应用场景:java反射多用于框架设计中。

其次,简述下框架:可重复用的,用来提高编程效率的代码。一些重复性的工作不需要在去开发,直接利用框架集成起来,用的时候调用框架,传递参数等等。

再次,介绍下java反射获取类对象的三种方式:

Class.forName("全限定类名"):这种用的最常见,也最符合反射的理念,参数可以是字符串,也可以是在配置文件中配置。
对象.getClass(): 实例对象都有了再获取类对象,有些多余。
类名.class(): 需要导包,不导包可能会出现编译错误。

 以springBoot框架为例,简述下我的理解:

因为springBoot框架每个团队进行使用的时候,撰写的pojo类是差异悬殊的,并且在springBoot框架编写时也不知道时那些类会使用这个框架,但是为了能够代码复用,使用反射来在运行时加载类,获取类对象、类的方法、属性等。当开发团队写的代码使用springBoot框架时,在运行阶段将自己的类的全限定名给了springBoot框架,以使框架可以获取类对象,进而使用这些已经开发完的框架功能。