面试全系列之【Java基础篇】之【反射】
1:反射的作用及其应用场景。
在运行时动态获取类的完整信息(包名、类名、父类、接口、字段、方法、构造器),并能动态创建对象、调用方法、修改字段值的机制。
运行时动态获取类信息不知道具体类名,也能拿到结构。
动态创建对象不用
new,通过newInstance/ 构造器创建实例。动态调用任意方法包括 private 方法。
动态访问 / 修改字段包括 private 成员变量。
解耦不硬编码类名、方法名,提高扩展性。
1. Spring IOC 容器(最经典)
- 读取 XML / 注解里的类全限定名
- 反射实例化 Bean
- 反射注入属性(@Autowired、@Value)
- 反射执行初始化方法(@PostConstruct)
2. 框架 AOP 动态代理
- JDK 动态代理 / Cglib 底层都大量用反射
- 运行时获取目标方法,执行前后增强
