我是初學者,我對以下內容感到疑惑。創建我的對象的副本
比方說,我有一個類foo
和創建的對象foo first
,並把一些數據吧:
foo first = new foo();
first.data="mydata";
然後我想創建另一個對象foo second
並使其具有相同的內容(但不完全相同的內存位置)爲first
。我可以做以下事情來實現嗎?
foo second = new foo();
second = first;
抑或這只是設置first
和second
到相同的內存地址,我只是有效地獲得存儲在單個對象上兩個手柄?
我讀過關於克隆物體的事情,它看起來太複雜了。我覺得自從我經歷了在foo second = new foo();
中定義新的foo
的麻煩之後,編譯器應該認識到second = first;
意圖複製整個事物而不是指向第一個。它是如何工作的?
所以我的問題是:爲什麼這不是如何工作?上述編譯器如此設置的邏輯有什麼缺陷?
「_我讀了克隆對象,看起來太複雜了 - 」 - 呃,我不敢說,你將不得不更多地瞭解它。雖然我會推薦一個[clone ctor](http://www.javapractices.com/topic/TopicAction.do?Id=12)over clone()'。我還建議你通過直接變量訪問使用[accessors/mutators](http://stackoverflow.com/a/15711958/2071828)。 –
*「它是如何工作的?」*如果是這種情況,那麼爲什麼你認爲其他用戶寫了「複雜」的東西來克隆他們的對象? – Tom
@Tom goot point!我想我的問題是關於「爲什麼這不是它的工作原理」? – Kagaratsch