6
A
回答
4
這是因爲如果您的對象不是Cloneable
,則clone()
方法會拋出CloneNotSupportedException
。
您應該看看documentation for clone()
方法。
以下是clone()
方法是如何在類Object
聲明:
protected Object clone() throws CloneNotSupportedException
注:
而且,它已經意識到Clone
壞了。 This answer在這裏解釋爲什麼以及如何避免使用它。
1
製作Cloneable
標記界面是一個錯誤。
也就是說,它所做的一件事是在Object
中「啓用」clone()
的默認實現。如果您沒有implement Cloneable
,則調用super.clone()
將拋出CloneNotSupportedException
。
1
有人說這是從C++模仿拷貝構造函數的嘗試,但這裏在計算器上以前類似的問題吧:About Java cloneable
1
目的是在javadoc規定。它指定克隆這種類型的對象是允許的。
如果你的類依賴於內置的實施clone()
(由Object.clone()
方法提供的),那麼這個標記接口使場逐場克隆。 (如果您在沒有實現Cloneable
的對象上調用內置克隆方法,您將得到一個CloneNotSupportedException
。)
1
clone()方法的用途是創建一個對象的新實例(副本)調用。正如你在使用克隆方法的答案中看到的,你的類應該實現Cloneable接口。你可以選擇實現克隆的方式,你可以爲你的課程做淺層或深層複製。您可以看到示例http://javapapers.com/core-java/java-clone-shallow-copy-and-deep-copy/。
相關問題
- 1. 爲什麼Java中沒有「Equlable」接口?
- 2. Java中的強制性可複製接口
- 3. Groovy可寫接口有什麼作用?
- 4. Java中的可計算和可操作接口是什麼?
- 5. Java此接口有什麼問題
- 6. asp.net web api控制器接口有什麼好處嗎?
- 7. 什麼是java中的靜態接口?
- 8. 什麼是Java中的接口?
- 9. 什麼是Java中的回調接口?
- 10. Java中的接口Comparable比較什麼?
- 11. 爲什麼Java接口
- 12. 存儲庫模式的接口有什麼特別的用處?
- 13. 關於繼承的接口和差異有什麼用處
- 14. Java RMI連接使用什麼端口?
- 15. 爲什麼在java中需要接口?
- 16. 爲什麼Java中的類默認是不可複製的
- 17. 我的@implementation中有@接口 - 爲什麼?
- 18. Java Queue接口中的方法有什麼區別?
- 19. 爲什麼我們需要java中的私有嵌套接口?
- 20. Java中的公共和私人接口有什麼區別
- 21. j2me中的可複用接口
- 22. 接口有什麼意義?
- 23. 爲什麼[WCF]有接口
- 24. 在接口上使用@Deprecated表示法有什麼好處?
- 25. 將接口聲明爲類成員有什麼用處?
- 26. 爲什麼可以調用Java的接口方法的方法? [可比]
- 27. 爲什麼布爾包裝類實現Serializable接口和Comparable接口?它有什麼用處?
- 28. 類接口複製
- 29. 爲什麼Java的字符串不是可比接口
- 30. 爲什麼在Java中沒有Hashable接口
你能解釋爲什麼這是一個錯誤嗎? – 2012-07-14 07:27:03
@MarkRotteveel Cloneable接口應該有一個克隆方法,並且Object中的受保護克隆方法不需要「激活」。現在的界面並沒有真正有用的用途,同時使用了一個好名字並導致了混亂。 – 2012-09-17 20:35:51