java clone機制

oxoxooxx發表於2012-04-09

java clone 克隆的物件同原物件一樣,具體可以用如下的形式描述:
x.clone() != x x.clone().getClass == x.getClass() x.clone().equals(x)

淺複製 vs. 深複製
淺複製與深複製的主要區別是是否對物件內部的引用型別進行clone操作,即深複製最終產生的物件與源物件時完全獨立的。
在考慮clone時,primitive和不可變物件型別是可以同等考慮的,都不會影響原型。

如何實現clone:
1.宣告實現Cloneable介面
2.呼叫super.clone拿到一個物件,如果父類的clone實現沒有問題的話,在該物件的記憶體儲存中,所有父類定義的field都已經clone好了,該類中的primitive和不可變型別引用也克隆好了,可變型別引用都是淺copy
3.把淺copy的引用指向原型物件的克隆體。

參考:

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23937368/viewspace-1057863/,如需轉載,請註明出處,否則將追究法律責任。