我读到this今天发布了有关深度复制的文章,并提出了一些问题:
在第一个代码中,作者说将(整数)对象添加到克隆中不会出现在原始代码中。为什么会这样呢?据我了解,克隆基本上创建一个与原始对象具有相同引用的对象。
为什么克隆中的更改没有反射(reflect)在原始版本中?
克隆不与原始版本共享相同的引用吗?
最佳答案
克隆的全部目的是与原始版本不同 - 因此克隆中的更改不会反射(reflect)在原始版本中。否则,您可以只使用简单的分配而不是克隆。
例如
MyClass a = new MyClass(); // some cloneable class
MyClass b = a; // not a clone, changes to `b` will affect in `a`
// assignment duplicates the reference
-or-
MyClass b = a.clone(); // clone, changes to `b` will not affect in `a`
// clone duplicates the object
实际上有一篇关于 Java 克隆的维基百科文章 here .
关于java - 修改方法中的数组列表并按值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505147/