1.什么是反射?反射在程序中的应用场景,为什么反射会被称为框架设计的灵魂?
(1)反射是是一种机制,包括类加载 获取类对象 获取成员变量 获取构造方法 获取成员方法 根据构造方法创建对象 根据成员方法执行方法 根据成员变量访问变量
(2)应用场景:在运行时期想要不动源代码的情况下切换对象,就需要用到反射
(3)通过反射编写代码,暴露给用户的只是一个配置文件,用户只需要会修改配置文件就能使用不同功能,而框架是优秀开发者开发的半成品软件,普通程序员作为使用者,只需要学会框架配置文件的配置规则,就能通过框架的配置文件去执行框架的不同功能,是一个道理
2.获取 Class对象有几种方式?他们的用途都在哪?
三种方式获取Class对象
(1)类名.class属性,常用于没有对象的情况下,获取到Class对象,将Class对象加载进内存,也可以在已经存在对象的时候,使用这种方式获取
(2)对象名.getClass()方法
,在已经有对象的情况下,反推拿到该对象的Class类对象
(3)Class.forName(全类名)方法,将类的全路径配置到方法中,可以根据类的全路径将类加载进内存,生成Class类对象
3.如何获取Class对象中被私有的成员变量对象和成员方法对象?
(1)获取成员变量
首先根据Class.forName(包路径)方法创建Class对象
-> 通过对象调用getDeclareField,获取成员变量对象
-> 通过Class.getDecalaredConstructor()方法创建单个的私有构造方法
-> 通过构造方法对象newInstance创建对象
(2)获取成员方法
首先根据Class.forName(包路径)方法创建Class对象
-> 通过Class.getDecalaredConstructor()方法创建单个的私有构造方法
-> 通过构造方法对象newInstance创建对象
-> 通过对象调用getDeclareMethod,获取成员方法对象
|