2011-03-25 37 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

相關問題