一、 什么是Java的反射?
JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取类的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。
二、 获取 Class 对象的方式?
- 1、知道具体类的情况下可以使用:
类名.class
- 2、不知道具体类的情况下
Class.forName("cn.kinggm20.Test");
- 3、知道具体对象的情况下:
Object obj = new Object();
obj.getClass();
三、反射机制优缺点
优点: 运行期类型的判断,动态加载类,提高代码灵活度。
缺点: 1,性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的 java 代码要慢很多。2,安全问题,让我们可以动态操作改变类的属性同时也增加了类的安全隐患。
四、反射的应用场景
- 我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序;
- Spring 框架的 IOC(动态加载管理 Bean)创建对象以及 AOP(动态代理)功能都和反射有联系;
- 动态配置实例的属性;