2014-09-11 51 views
0

我正在研究一些代码,并试图找出如何将对象引用复制到另一个对象。我一直看到使用的clone()方法,但我读过它的缺陷,我想要复制的类已经实现了可序列化。所以我有一个问题是关于使用'='和克隆方法之间的区别 - 我的理解是,这两个都是浅拷贝,所以它们应该工作相同,但如果这是真的,那么有一个方法的好处是什么为了这?在Java中使用'='与clone()

我正在处理的代码有2个对象数组 - 两个相同类型的对象,两个数组中的所有对象最初都是空的,我将数组B的值分配给数组A相等。 由于代码对数组A中的对象进行初始化并将值分配给数组A中对象的变量。 尽管代码结束,但数组B中的所有对象仍为空。

我在这里有错吗? 如果这个概念没有错,我认为这只是我在我的代码中忽略的东西。

任何帮助表示赞赏。

+1

你的问题是比较苹果与橘子,它们是如此完全不同以至于无法比较。 '='指定一个引用,就是这样。克隆创建了一个全新的对象,其状态应该与克隆对象相同,但这两件事情又非常不同。 – 2014-09-11 01:37:58

+1

如果您可以提供示例代码以便我们可以参考它,这将有所帮助 - 显示代码比描述它更好。 – 2014-09-11 01:39:56

回答

1

当您使用=时,您复制对象的引用(在内存中)。当使用.clone()时,你创建一个新的对象。

+0

简单而正确。 – Christian 2014-09-11 01:39:05

3

我会让我的评论答案:

你的问题比较苹果和橘子,他们是如此完全不同的,他们所不能比拟的。 =分配参考,就是这样。克隆创建一个完全新对象,其中状态应该与克隆对象相同,但它又是一个完全不同的对象/引用。顺便说一下,有深度和浅层克隆,因此浅拷贝克隆的复合区域可能是相同的,但这是另一个问题的主题。

+0

感谢您的意见,这就是我不明白的地方。 – 2014-09-11 01:41:56