2013-05-09 51 views
0

任何人都可以給我一個實際用法,其中使用了克隆,我瞭解它是如何完成的以及它的類型,但我沒有看到它的實際用法。我還在某處讀過它用於保存對象的狀態,但我仍然認爲很少有整個對象的狀態會非常重要。什麼是克隆的實際用法

+0

克隆或複製帶來什麼影響? (後者幾乎總是首選。) – 2013-05-09 15:31:39

+0

E.g.我們想在方法中改變對象的語句,但是在這個方法執行後我們要把對象返回到初始狀態。 – bsiamionau 2013-05-09 15:32:07

+0

我不行。自1997年5月以來,我一直使用Java進行編程,而且我從未找到它的用途,或者「複製構造函數」。 – EJP 2013-05-10 01:23:39

回答

0

如果你有一個對象y在對象X中被封裝(例如它是私有的),但是你提供了一個訪問器方法(比如getY()),那麼你可能會冒險將引用返回給你的私有對象,這並不好。您不希望客戶端代碼能夠獲取對其的引用。因此,您可以在getY()中複製或克隆對象。如前所述,雖然複製是可能首選對克隆 - 見有效的Java項目11

這裏是示例代碼:

public class X { 
    private Date y = new Date(); 

    // other code here 

    public Date getY() { 
     //this could be bad: 
     //return y; 
     //this is good: 
     return new Date(y); 
    } 
+0

哎呀忘了提及另一個參考:有效的Java項目24有防禦性複製的信息。 – 2013-05-09 16:04:45

+0

一個非常合乎邏輯的答案,謝謝!我會更多地討論防禦性複製 – Fardu 2013-05-09 18:17:37

0

有時您將對象屬性加載到表單,然後在對(文本框,複選框,...)進行更改後將每個屬性綁定到(textbox,combobox,...),即使您取消了也可以「T得到的原始值,因此克隆是最好的選擇

克隆的對象,然後綁定,如果要取消原來的對象始終是不變的,這只是一個案例