反射机制
- Java的反射机制指的是在运行状态中,对于任意的一个类,都知道这个类的所有属性和方法,对于任意的一个对象,都能调用它的所有属性和方法,这种动态获得对象的信息和方法的功能称为Java语言的反射机制
1:获取对象的四种方法
- 如果我们要动态到获取到这些信息,我们需要依靠class对象,class对象将一个类的方法,变量等信息告诉正在运行的程序。
- 具体类的时候
- Class my = String.class
- class.ForName()传入类的路径
- 内部调用的是native方法
- forName0(className)
- 第二个Boolean,
- 通过对象的实例
- jiang a = new jiang();
- a.getClass()
- 通过类加载器XXXloader.loadclass()
- 通过类加载器获取的class对象不会进行初始化,意味着初始化,静态块,静态代码不会被执行
2:应用场景
-
在我们使用JDBC连接池的时候,使用 class.forName()通过发射加载数据库的驱动程序
-
动态配置实例的属性
-
IOC,AOP
3:优缺点
- 运行时期类型的判断。动态的加载类,实现代码的灵活性
- 性能瓶颈,一系列的解释操作,通知JVM需要做事情
- 安全问题,我们可以动态的改变类的属性,但是也增加了隐患
获取对象的四种方法
- 直接获取 a.class
- CLASS.FORNAME(DIZHI)
- 实例.getclass()
- 使用类加载器 ,但是类加载器的那种不会进行初始化,和静态变量和静态代码块的执行
反射Java 在运行时的时候,我们知道一个对象或者是一个类的所有属性,也知道他的所有方法
坏处
- i性能瓶颈
- 安全问题
灵活方便~~
JDBC
动态代理
IOC AOP