反射(Reflection)是 Java 中强大的元编程工具,允许程序在运行时 inspect 和操作类、方法、字段等元数据。以下是核心内容概览:
🔍 反射的基本概念
反射的核心类位于 java.lang.Class
,通过以下方式获取类元数据:
Class.forName("全限定类名")
object.getClass()
类名.class
✅ 三大核心功能:
- 类信息获取:动态获取类名、父类、接口等
- 对象实例化:通过
Class.newInstance()
创建对象 - 方法调用:使用
Method.invoke()
执行任意方法
📌 典型应用场景
- 框架开发:如 Spring 的依赖注入
- 动态代理:实现 AOP 编程
- JSON 序列化:通过字段名映射数据
- 代码分析工具:如 IDE 的智能提示功能
🧪 实战示例
// 获取类元数据
Class<?> clazz = Class.forName("java.util.ArrayList");
// 获取构造器
Constructor<?> constructor = clazz.getConstructor();
// 创建实例
Object instance = constructor.newInstance();
// 获取方法
Method method = clazz.getMethod("add", Object.class);
// 调用方法
method.invoke(instance, "Hello Reflection");
📚 扩展阅读
想深入了解反射实践?点击此处查看示例代码
了解更多:Java 官方文档 - Reflection