Deep clone an object in java
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Java: recommended solution for deep cloning/copying an instance
我有一个必须克隆的对象。 但是,在克隆时,还应该克隆其中的对象。 这怎么可能 ??
您必须意识到,这不是一个明确定义的问题,并且无法以机械化的全自动方式正确进行深度复制。这些是一些选项:
-
Java具有
clone 协议,但是如今在大多数情况下它都已被弃用。 - 您可以使用序列化对内存中的序列进行反序列化;
- 您可以编写所谓的复制构造函数。
Java Deep-Cloning library The cloning library is a small, open source
java library which deep-clones objects. The objects
don't have to implement the Cloneable interface. Effectivelly, this
library can clone ANY java objects.
1 2 | Cloner cloner = new Cloner(); MyClass clone = cloner.deepClone(o); |
因此,这里是克隆示例。
您需要像这样覆盖
1 2 3 4 5 6 7 8 9 10 | public class Person implements Cloneable{ private Long id; private Address address @Override protected Object clone() throws CloneNotSupportedException { //do deep cloning } } |
另请参阅
- 使用复制构造函数而不是Object.clone进行深度复制的正确方法
克隆的另一种方法是提供一个副本构造函数,以根据所提供实例的数据构造一个新实例:
1 2 3 4 | public MyClass(MyClass instanceToCopy) { ... } |
进行深度克隆的最简单方法是使用
实现深层副本的最简单方法是先序列化然后反序列化对象。查找