Java面试必问:反射和对象拷贝,简单易懂版

50 阅读1分钟

Java面试必问:反射和对象拷贝,简单易懂版

1. 反射(Reflection)—— Java的"照妖镜"

反射就像是Java的"照妖镜",它能在程序运行时动态地查看和操作类、方法、属性等信息,而不需要在代码里写死。

(1)反射能干啥?

  • 运行时获取类的信息(比如类名、方法、属性)
  • 动态创建对象(即使类名是运行时才知道的)
  • 调用私有方法(突破访问限制)
  • 框架底层实现(比如Spring、Hibernate都用反射)

(2)怎么用反射?

java

复制

下载

// 1. 获取Class对象(三种方式)
Class<?> clazz = Class.forName("com.example.User"); // 最常用
Class<?> clazz = User.class; // 直接.class
Class<?> clazz = userObj.getClass(); // 从对象获取

// 2. 创建对象
Object user = clazz.newInstance(); // 调用无参构造方法

// 3. 获取方法并调用
Method setNameMethod = clazz.getMethod("setName", String.class);
setNameMethod.invoke(user, "张三"); // 相当于 user.setName("张三")

(3)反射的优缺点

✅ 优点:灵活,能动态加载类、突破封装限制
❌ 缺点:性能较差(比直接调用慢),代码可读性降低