Java 反射机制:运行期动态调用

一、反射是什么

反射在运行期获取类的结构(字段、方法、构造器)并动态调用,是框架(Spring、MyBatis)的灵魂。

Class<?> c = Class.forName("com.demo.User");
Object obj = c.getDeclaredConstructor().newInstance();
Method m = c.getMethod("say");
m.invoke(obj);

二、代价与注意

  • 反射绕过编译期检查,易出运行时错误;
  • 性能比直接调用差(可缓存 Class/Method 缓解);
  • 私有成员需 setAccessible(true),有安全限制。

三、典型用途

注解处理器、依赖注入、ORM 映射、序列化。日常业务少用,但理解反射能看懂框架原理。