java - 修改方法中的数组列表并按值传递

标签 java cloning

我读到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/

相关文章:

java - 我怎样才能在 Java 中获得与过时的 Swift 代码相同的字节数?

使用 SSL 连接到 Tibco EMS 时出现 javax.crypto.BadPaddingException

java - 需要帮助逐行读取文件

java - 为什么这段代码不起作用?刽子手

javascript - 如何防止 javascript/backbone.js 克隆模型共享属性

delphi - 克隆 TStringGrid 组件

lua - 克隆 Lua 状态

java - 将时间戳添加到日志文件名时出错 (log4j2)

c# - 在 C# 中创建对象的副本

c++ - 移动函数体,避免完全克隆