克隆对象的任何更改都会反映java中的原始对象吗?

时间:2015-01-20 05:09:45

标签: java

克隆对象的任何更改都会反映原始对象吗?请任何人解释一下clone()方法如何在内部工作。

1 个答案:

答案 0 :(得分:4)

所以克隆是关于创建原始对象的副本。它的字典意思是:“制作相同的副本”。

默认情况下,java克隆是“逐字段复制”,即因为Object类不知道将调用clone()方法的类的结构。因此,当JVM调用克隆时,请执行以下操作:

1)如果类只有原始数据类型成员,那么将创建一个全新的对象副本,并返回对新对象副本的引用。

2)如果类包含任何类类型的成员,则只复制对这些成员的对象引用,因此原始对象和克隆对象中的成员引用都引用同一对象。

如果您想要一个独立于原始的克隆并且克隆中的更改不应该影响原始。然后你可以使用深度克隆

以下是完整指南:http://howtodoinjava.com/2012/11/08/a-guide-to-object-cloning-in-java/