一、反射是什么
反射在运行期获取类的结构(字段、方法、构造器)并动态调用,是框架(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 映射、序列化。日常业务少用,但理解反射能看懂框架原理。