【发布时间】:2017-03-03 21:48:16
【问题描述】:
具有对象实例变量的对象副本是否获得与原始对象相同的实例变量?如果是这样,我想知道原始对象和副本对象是否引用了相同的实例变量。
【问题讨论】:
-
如果他们是
ints(或任何其他原语),没有。如果它们是引用类型,则取决于复制ctor的实现。 -
复制构造函数是人类编写的代码。因此,答案取决于构造函数主体中的代码。如果您显示一些示例代码,我们可以提供明确的答案。
-
是的,正如@AndyTurner 提到的,您可能需要阅读有关克隆类型的信息,即深克隆和浅克隆
-
@Coder,您的意思是要编辑您的问题 以包含该代码吗?
-
注意“克隆”这个词,Java 世界中的许多人将其理解为使用
Object#clone方法。该方法是创建对象副本的一种方法,但有技巧和陷阱,包括@YohannesGebremariam 提到的深/浅复制问题。不基于clone的复制构造函数和复制方法也必须处理深副本和浅副本,但可以避免clone的一些复杂性。
标签: java object copy-constructor