java - 在 Java 中使用 '=' 与 clone()

标签 java reference clone shallow-copy

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

我正在处理的代码有 2 个对象数组 - 都是相同类型的对象,两个数组中的所有对象最初均为 null,并且我将数组 B 的值分配给相等的数组 A。 随着代码的进行,数组 A 中的对象被初始化,并且值被分配给数组 A 中对象的变量。 但在代码结束时,数组 B 中的所有对象仍然为 null。

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

感谢任何帮助。

最佳答案

我会将我的评论作为答案:

你的问题是比较苹果和橙子,它们完全不同,无法比较。 = 分配一个引用,就是这样。克隆创建一个完全新对象,其状态应该与克隆对象相同,但它又是一个完全不同的对象/引用。顺便说一句,克隆有深拷贝和浅拷贝之分,因此浅拷贝克隆的复合字段可能是相同的,但这是另一个问题的主题。

关于java - 在 Java 中使用 '=' 与 clone(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777659/

相关文章:

java - 内部 lambda 引用 外部 lambda 变量

c++ - 使用 shared_ptrs 时返回引用

git - 使用 TortoiseGit 将 SVN Repo 克隆到 Git(包含所有修订版)?

javascript - 使用 JQuery 克隆的下拉框不保留原始行为

python - 通过 Google App Engine 创建 KhanAcademy 克隆 - app.yaml 中应用程序名称的问题

Java随 secret 码生成器问题

java - 如何使java形状以圆形动画?

reference - 生命周期不匹配 - 返回引用的可变变量

java - '${spring.version}'的使用

java - 我在 Java 中尝试将 Stack 实现为数组时不断收到 'cannot find symbol' 错误