什么是反射?应用?原理?
- 反射允许Java在运行时检查和操作 类的方法和字段。
- 通过反射,可以动态地获取类的字段、方法、构造方法等信息,
- 并在运行时调用方法或访问字段。
比如创建一个对象是通过new关键字来实现的:
Person person = new Person();
Person类的信息在编译时就确定了,
那假如在编译期无法确定类的信息,但又想在运行时获取类的信息、创建类的实例、调用类的方法,这时候就要用到反射。
反射功能主要通过java.lang.Class类 及java.lang.reflect 包中的 类如Method、Field、Constructor等来实现。
反射有哪些应用场景?
- Spring框架大量使用了反射来动态加载和管理Bean。
- Java的动态代理(Dynamic Proxy) 机制就使用了反射来创建代理类。
- 代理类可以在运行时动态处理方法调用。
- 这在实现AOP和拦截器时非常有用。
- JUnit和TestNG等测试框架使用反射机制来发现和执行测试方法。
- 反射允许框架扫描类,查找带有特定注解(如@Test)的方法,并在运行时调用它们。
反射的原理是什么?
Java程序的执行分为编译和运行两步,
- 编译之后会生成字节码(.class)文件,
- JVM进行类加载的时候,会加载字节码文件,
- 将类型相关的所有信息加载进方法区,反射就是去获取这些信息,然后进行操作。

浙公网安备 33010602011771号