我從來沒有見過clone()方法在任何實際代碼中使用。我正在讀它,並覺得它的使用可能會使代碼非常繁瑣。 是否有clone()方法的任何特定用例?在什麼情況下必須使用clone()以及爲什麼使用普通的析構函數還不夠?用例克隆()
Q
用例克隆()
4
A
回答
2
Josh Bloch在Effective Java中也不建議使用clone()方法。
有幾個問題用這種方法:
1)如果可複製的對象不僅有原始類型的字段,而且對象字段,然後克隆的對象將收到對這些對象的引用剛纔而不是真正的克隆對象。爲了避免這種情況,所有內部對象都應該可以複製。 2)如果你創建了一個可複製類的子類,那麼它也是可複製的(即使你不想要)。這就是爲什麼你應該以適當的方式重寫clone()方法以避免可能的問題。
當你應該使用它:從不,如果可能的話。你應該非常小心地使用它。如果您想要使可複製的對象中的所有字段都是原始類型,那麼這並不危險。在所有其他情況下,在使用前請三思。
3
clone
是使傳遞給方法或構造陣列的防禦性拷貝很方便(如所有數組類型是Cloneable
,並且被協變clone()
簽名以便boolean[].clone()
實際上返回一個boolean[]
而非Object
)。這是我見過的十年中唯一真正好用的,儘管...
相關問題
- 1. 克隆PHP使用範例
- 2. 克隆jsfiddle示例
- 3. 克隆EC2 Ubuntu實例
- 4. Java克隆繼承示例
- 5. 克隆獨立實例
- 6. Android:克隆類實例
- 7. 如何使用http來克隆克隆?
- 8. 克隆行不克隆TR
- 9. 克隆或不克隆
- 10. jQuery的克隆不克隆
- 11. 使用git克隆git不能克隆回購:// ... - 使用git克隆http://
- 12. 克隆
- 13. 克隆
- 14. 用於克隆子
- 15. C#克隆通用
- 16. jquery克隆多個實例爲什麼
- 17. 克隆亞馬遜Linux實例
- 18. EC2實例克隆和自動終止
- 19. 複製/克隆實例的屬性?
- 20. 如何在CKeditor中克隆實例?
- 21. 啓動克隆的EC2實例
- 22. AWS Autoscaling不克隆正確實例
- 23. 克隆打字稿中的類實例
- 24. JavaScript類實例是否克隆函數?
- 25. 克隆亞馬遜機器實例
- 26. 谷歌計算引擎 - 克隆實例
- 27. CRM 2011 ONLINE - 克隆現有實例
- 28. Jquery克隆問題與克隆表格
- 29. Jquery的克隆()修改後克隆
- 30. Mercurial - 克隆克隆另一個回購
嗯...這是我正在閱讀的書..關於該方法的一切看起來很髒...想知道爲什麼它存在於所有 – Aadith 2010-02-21 15:34:57
Java的第一個版本發佈相當快。他們做了很棒的工作,他們的許多決定都非常聰明。但他們也犯了一些錯誤,比如java.util.Date類或clone()方法。如果它被添加到API一次,他們不能改變它。 – Roman 2010-02-21 15:39:17
@Roman java.util.Date怎麼樣?爲什麼這是一個錯誤? – Aadith 2010-02-21 15:59:31