回答
如果您創建一個新的狗:
Dog a = new Dog("Mike");
然後:
Dog b = a;
你必須指向同一Dog
一個Dog
和兩個變量。因此,這樣做的:
a.putHatOnHead("Fedora");
if (b.hasHatOnHead()) {
System.out.println("Has a hat: " + b.getHatName());
}
將打印狗有一頂軟呢帽,因爲a
和b
參考相同的狗。
相反,這樣做的:
Dog b = a.clone();
現在你有兩個狗克隆。如果你在每隻狗上戴上帽子:
a.putHatOnHead("Rayden");
b.putHatOnHead("Fedora");
每條狗都會有自己的帽子。
謝謝你明確的指示,現在事情變得更加清晰:) – Robert 2014-11-24 13:19:00
=
符號是java中的賦值運算符。有a = b
的意思是「我賦給變量a
變量b
的值,如果b
是一個對象,然後a = b
使得a
點到b
所指向的對象。它確實不複製的對象,也不是克隆。
如果你想克隆一個對象,你要麼必須通過手(醜陋的),這樣做,或不得不做出這樣的必須是可克隆落實Clonable
類然後調用clone()
。
優勢上clone()
在「醜陋的」方式是clone()
它是開發者要克隆的類定義瞭如何進行克隆以確保副本是合法工作副本。
謝謝你,先生:) – Robert 2014-11-24 13:22:20
讓我試着解釋一下:
Object obj = new Object(); //creates a new object on the heap and links the reference obj to that object
案例1:
Object obj2 = obj; //there is only one object on the heap but now two references are pointing to it.
案例2:
Object obj2 = obj.clone(); //creates a new object on the heap, with same variables and values contained in obj and links the reference obj2 to it.
對克隆方法的更多信息,你可以參考在Java API文檔
謝謝你的努力,現在我可以舒服地說,我明白了整個概念:) – Robert 2014-11-24 13:21:58
隨時隨地老兄: ) – 2014-11-24 13:22:44
=
創建對同一對象的新引用。 clone()
創建一個新的物理對象,其屬性與前面的一樣
幾年前回答問題時,如果您沒有添加任何內容,請不要回答。你所說的一切都已經包含在以前的答案中。 – klutt 2017-05-26 23:17:08
_ @ AnmolParikh_只是爲了通知你。你的答案目前在Meta Stack Overflow中討論過:https://meta.stackoverflow.com/questions/349781/how-do-i-vote-late-answers-when-there-are-much-better-answers – 2017-05-26 23:29:48
- 1. 克隆和擴展骨幹事件對象有什麼區別?
- 2. 複製和克隆有什麼區別?
- 3. 如何使用clone()方法克隆Java對象
- 4. 複製.hg文件夾和使用克隆有什麼區別?
- 5. .clone()和.html()有什麼區別?
- 6. git clone和checkout有什麼區別?
- 7. Ruby的dup和clone方法有什麼區別?
- 8. 對象和引用有什麼區別?
- 9. git clone和git clone --mirror有什麼區別?
- 10. 「interned」和「uninterned」符號有什麼區別
- 11. nohup和&符號有什麼區別
- 12. 深層和淺層克隆有什麼區別?
- 13. 克隆和複製git repo有什麼區別?
- 14. 添加和克隆遠程存儲庫有什麼區別?
- 15. XMLHttpRequest對象的open()和send()方法有什麼區別?
- 16. Copy與Clone有什麼區別?
- 17. 算法和方法有什麼區別
- 18. 對象和實例有什麼區別?
- 19. 「WSH」和「WScript」對象有什麼區別?
- 20. 對象和變量有什麼區別?
- 21. Javascript - 這個對象定義符號有什麼區別?
- 22. 使用pip命令和conda安裝tensorflow或指導克隆有什麼區別?
- 23. 幾次克隆對象的最快方法是什麼
- 24. 克隆使用JQuery clone()方法動態添加html內容
- 25. 'remove'和'removeChild'方法有什麼區別?
- 26. Html.Partial和Html.Action方法有什麼區別?
- 27. browser.sleep()和browser.wait()方法有什麼區別?
- 28. 方法`toHaveBeenCalled()`和`andCalledThrough()`有什麼區別?
- 29. 'configure'和'configureGlobal'方法有什麼區別?
- 30. bcrypt()和crypt()方法有什麼區別?
可能重複的[如何在Java中複製對象?](http://stackoverflow.com/questions/869033/how-do-i -copy-an-object-in-java) – Joe 2014-11-24 11:11:52
可能的重複意味着它應該被拒絕投票嗎? – user3437460 2014-11-24 11:21:25
是的,先生,我只是這個網站的新手,但我仍然很欣賞我得到的。 – Robert 2014-11-24 13:17:38