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