假设我有一个我创建的对象。我在其中编辑了一些值,因此它与我引用的新对象 () 不同。让我们称该对象为 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/