java - 我如何在 java 中创建对象的副本,而不是指针

标签 java pointers object

假设我有一个我创建的对象。我在其中编辑了一些值,因此它与我引用的新对象 () 不同。让我们称该对象为 f1。现在我希望另一个名为 f2 的对象是 f1 的副本而不是指针,这样当我更改 f2 中的值时,它不会同时更改 f1。我将如何在 Java 中执行此操作?

最佳答案

首先,让你的类(class)实现Cloneable界面。没有这个,调用clone()在你的对象上会抛出异常。

接下来,覆盖 Object.clone()所以它返回你的特定类型的对象。实现可以简单地是:

@Override
public MyObject clone() {
    return (MyObject)super.clone();
}

除非你需要做一些更复杂的事情。请务必调用 super.clone() , 尽管。

这将一直调用层次结构到 Object.clone() ,它将对象中的每条数据复制到它构造的新数据中。引用是复制的,而不是克隆的,所以如果你想要一个深拷贝(你的对象引用的对象的克隆),你需要在重写的 clone() 中做一些额外的工作。功能。

关于java - 我如何在 java 中创建对象的副本,而不是指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435826/

相关文章:

java - JProgressBar 未触发 setProgress 上的 propertyChange

java - IB Java API : Extracting ticker data (real time bars) for multiple contracts

c - 字符串重新分配的意外行为

c - 指向结构行为的意外指针

c++ - 需要帮助理解指针算法

javascript:将函数分配给变量会用未定义填充变量

java - 文件未完全写入

java - 如何从文件中一一读取整数和字符?

javascript - 使用 javascript 迭代子对象并获取所有值

javascript - 将对象数组合并为一个对象数组