SerializationUtils.clone()可实现深拷贝,要求对象及所有嵌套字段均实现Serializable接口;需引入commons-lang3 3.14+依赖;支持泛型与null安全,但有性能开销且不支持不可序列化类型。

直接用 SerializationUtils.clone() 方法,一行代码搞定深拷贝,前提是对象及其所有字段都实现了 Serializable 接口。
前提条件:确保可序列化
被拷贝的对象类和它内部所有引用类型的字段(包括嵌套对象、集合元素类型等)都必须实现 Serializable 接口。例如:
-
Person类要implements Serializable - 其字段
Address address也要implements Serializable - 若含
List<Order>,则Order也必须可序列化 - 标记为
transient的字段会被跳过,不参与拷贝
引入依赖(Maven)
确认项目已添加 Apache Commons Lang3(推荐 3.14+ 版本):
<dependency><br> <groupId>org.apache.commons</groupId><br> <artifactId>commons-lang3</artifactId><br> <version>3.14.0</version><br></dependency>
调用方式:一行完成深拷贝
无需额外配置,直接静态调用:
立即学习“Java免费学习笔记(深入)”;
Person original = new Person("张三", new Address("北京"));<br>Person copy = SerializationUtils.clone(original); // ✅ 深拷贝完成
修改 copy.address.city 不会影响 original.address.city,说明引用对象也被独立复制。
注意事项
- 性能开销比手动构造略高,适合中低频使用场景(如配置快照、测试数据准备)
- 不支持含不可序列化成员的对象(如
ThreadLocal、Socket、InputStream等),会抛NotSerializableException - 泛型安全:方法签名是
<T extends Serializable> T clone(T obj),返回类型与入参一致,无需强制转型 - 空对象安全:传入
null时直接返回null,不会报错


















