Appearance
基础内容
参考:
深拷贝
- 深拷贝会递归地复制原对象及其所有层次的成员对象
实现方式
- 实现
Cloneable接口并重写clone()方法 - 使用序列化和反序列化
- 使用第三方库
浅拷贝(Shallow Copy)和深拷贝(Deep Copy)的区别:
| 特性 | 浅拷贝 | 深拷贝 |
|---|---|---|
| 拷贝范围 | 仅拷贝对象的基本类型字段和引用。 | 拷贝对象及其所引用的所有对象。 |
| 内部对象是否重用 | 浅拷贝后的两个对象共享同一引用对象。 | 每个对象包括其内部引用对象都是独立的副本。 |
| 对象的独立性 | 对拷贝前后两个对象的操作互相影响。 | 拷贝前后两个对象完全独立,互不影响。 |
| 速度与效率 | 通常比深拷贝速度快,效率高。 | 通常比浅拷贝速度慢,效率低。 |
| 实现难度 | 实现简单,直接调用clone()方法即可。 | 实现复杂,需要递归或序列化等方法。 |
| 是否涉及递归 | 否,只拷贝当前层次的字段。 | 是,需要递归拷贝所有层次的对象。 |
| 典型实现方法 | 通过Cloneable接口和默认的clone()方法。 | 使用Cloneable接口并重写clone()方法,或通过序列化。 |
使用工具类没有拷贝 BigDecimal 类型字段排查
- 大概率可能是因为这个是引用类型,而同等类下有一个字段是 Integer ,可能是Integer 有缓存??(并不是)
周六的时候看一下(工作的一件事情跟踪....)