Java-反射
一.定义
反射机制是在运行时,对于任意一个类,都可以知道这个类的所有属性和方法;对于任意个对象,都可以调用它的任意一个方法。只要给定类的名称,就可以通过反射机制获得类的所有信息。这种动态获取信息以及动态调用方法的功能称为java语言的反射机制。
二.优缺点
优点:
1.增加程序的灵活性,避免将固有的逻辑程序写死在代码里面
2.代码简洁,可读性增强,可提高代码的复用率
缺点:
1.相较于直接调用,在调用量大的情况下,反射效率低
2.存在内部暴漏和安全隐患
三.获取class的方式
1.Class.forName(“类的路径”);
2.类名.class
3.对象名.getClass()
4.基本类型的包装类,可以调用包装类的Type属性
四.哪里会用到反射机制
1.动态代理: 代理类在运行时通过反射获取目标类的方法信息,生成代理方法,并在调用目标方法时插入额外逻辑(如日志、事务控制)。
2.单元测试: 通过反射识别@Test
注解的方法,并动态调用执行测试逻辑。
3.配置文件加载: 许多框架(如 Spring)使用反射机制来读取和解析配置文件,从而实现依赖注入和面向切面编程等功能。
五.实现反射机制的类
1.Class:表示正在运行的Java应用程序中的类和接口
2.Field:提供有关类和接口的属性信息,以及对它的动态访问权限
3.Constructor:提供关于类的单个构造方法的信息以及它的访问权限
4.Method:提供类或接口中某个方法的信息