反射(Reflection)是 Java 中强大的元编程工具,允许程序在运行时 inspect 和操作类、方法、字段等元数据。以下是核心内容概览:

🔍 反射的基本概念

反射的核心类位于 java.lang.Class,通过以下方式获取类元数据:

  • Class.forName("全限定类名")
  • object.getClass()
  • 类名.class

✅ 三大核心功能:

  1. 类信息获取:动态获取类名、父类、接口等
  2. 对象实例化:通过 Class.newInstance() 创建对象
  3. 方法调用:使用 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

Java_Reflection
Class_Metadata
Method_Invocation