5

我是java新手,有人可以告诉我。是吗

Shallow copy: 原始类型和引用被复制

Deep copy: 对象被递归复制

没有默认实现clone()

4

4 回答 4

6

您可以查看以下文档clone()

clone类的方法Object执行特定的克隆操作。首先,如果这个对象的类没有实现接口Cloneable,则CloneNotSupportedException抛出a。请注意,所有数组都被认为实现了接口Cloneable,并且数组类型的克隆方法的返回类型是T[]任何引用或原始类型。否则,此方法会创建此对象的类的新实例,并使用此对象的相应字段的内容来初始化其所有字段,就像通过赋值一样;字段的内容本身不会被克隆。因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作。T[]T

于 2013-08-07T16:19:31.103 回答
0

如果你想要一个快速简单的深拷贝,使用 Apache 的 Lang 包和他们的SerializationUtils.clone()

于 2013-08-07T16:49:49.320 回答
0

根据维基百科

Object.clone() 的默认实现执行浅拷贝。当一个类需要深拷贝或其他一些自定义行为时,它们必须在从超类获取副本后在自己的 clone() 方法中执行该操作。

于 2013-08-07T16:18:32.563 回答
0

http://en.wikipedia.org/wiki/Object_copy - 默认情况下是浅拷贝,但绝对可以覆盖它以执行深层拷贝。

于 2013-08-07T16:17:31.293 回答