2011-03-25 27 views
2

可以说我有一个创建的对象。我编辑了一些值,因此它与我引用的新对象()不同。让我们调用这个对象f1。现在我想要另一个名为f2的对象是f1的副本,但不是指针,所以当我在f2中更改一个值时,它不会改变f1。我将如何去在java中做这个?我如何在java中创建对象的副本,而不是指针

+1

这个问题的重复:http://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java – 2011-03-25 17:15:09

+0

我beleive您可以用克隆方法,如果做到这一点你的对象实现可复制。 http://download.oracle.com/javase/tutorial/java/IandI/objectclass.html获取更多信息 – blong824 2011-03-25 17:16:07

回答

12

首先,你的班级实施Cloneable界面。没有这个,在你的对象上调用clone()就会抛出一个异常。

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

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

除非你需要更复杂的工作。请确保你打电话super.clone()

这将调用层次结构的所有方法到Object.clone(),它将对象中的每个数据片段复制到它构建的新数据片段中。引用是复制的,而不是克隆的,所以如果你想要一个深层拷贝(对象引用的对象的克隆),你需要在被覆盖的clone()函数中做一些额外的工作。

5

大多数对象有一个方法clone()将返回该对象的副本,所以你的情况

f2 = f1.clone() 
-2

,你可以克隆,或者如果你不能克隆你可以编写自己的功能吧。

function (variable){ 
    clone = JSON.parse(JSON.stringify(variable)) 
    return clone; 
} 
+0

问题是关于Java而不是JavaScript – 2015-04-28 20:27:30

相关问题