Skip to content
基础

一句话答案

浅拷贝只复制引用(指向同一对象),深拷贝递归复制所有引用对象,实现方式:序列化反序列化或手动递归复制。

核心要点

浅拷贝: Object.clone()默认 / BeanUtils.copyProperties 深拷贝: 序列化反序列化 / 手动递归 / JSON转换

追问与易错

追问方向:

  • BeanUtils.copyProperties 是深拷贝还是浅拷贝?(浅拷贝)
  • 实现深拷贝的方式有哪些?(序列化/JSON转换/手动递归/Cloneable递归clone)
  • 什么场景需要深拷贝?(需要隔离修改的可变对象,如缓存返回值)

易错点:

  • ❌ "实现 Cloneable 就是深拷贝"——Object.clone() 默认是浅拷贝
  • ❌ 忽略不可变对象不需要深拷贝——String/Integer 等不可变对象浅拷贝即可

💡 记忆锚点

浅拷贝是复印一张名片(两人共用同一套房),深拷贝是连房子一起克隆一套。Object.clone()默认只复印名片;要克隆房子得走序列化/JSON转换/手动递归。不可变对象(如String)不用深拷贝——石碑没人改得了。