可能重复:
Java:推荐的深度克隆/复制实例的解决方案
我有一个必须克隆的对象。但是,在克隆时,它还应该克隆其中的对象。这怎么可能 ??
您必须意识到,这不是一个明确定义的问题,深度复制无法以机械化、全自动的方式正确完成。这些是一些选项:
clone
协议,但现在大多数情况下它被认为已弃用;Java 深度克隆库 克隆库是一个小型的开源 Java 库,用于深度克隆对象。对象不必实现 Cloneable 接口。实际上,这个库可以克隆任何 java 对象。
Cloner cloner = new Cloner();
MyClass clone = cloner.deepClone(o);
所以这里是示例克隆。
您需要clone()
像这样覆盖方法
public class Person implements Cloneable{
private Long id;
private Address address
@Override
protected Object clone() throws CloneNotSupportedException {
//do deep cloning
}
}
另见
另一种克隆方式是提供一个复制构造函数,根据提供的实例的数据构造一个新的实例:
public MyClass(MyClass instanceToCopy)
{
...
}
实现深拷贝的最简单方法是序列化然后反序列化对象。向上看ObjectInputStream
和ObjectOutputStream
。
最简单的深度克隆方法是使用Java serialization
, 您serialize
和deserialize
对象并返回反序列化版本。