我,也許幼稚,克隆一個ArrayList(矢量置換)解決方案是如何克隆一個容器(f.e.ArrayList)*容易*?使用.clone()是錯誤的嗎?
ArrayList<Double> alBis = (ArrayList<Double>) alOriginal.clone();
考慮到,因爲數組包含不可變的雙打,我不需要 克隆他們,但只集裝箱。
由於clone()返回一個Object,我放在那裏,但是然後 -Xlint抱怨說這是一個未經檢查的強制轉換。
那麼,現在呢?用supressWarnings忽略它?創建一個新的ArrayList 並複製原始元素與緊湊的?任何類似於 Arrays.copyOf()的庫方法?
我讀Unchecked cast warning但接受的方式是令人難以置信的複雜。
「的clone()有重大缺陷」 你能不能解釋一下?我沒有注意到任何鏈接問題的答案。 – adamax 2011-02-23 17:53:30
閱讀Joshua Bloch的Effective Java – 2011-02-23 17:59:48
當考慮使用克隆與拷貝構造函數時,需要考慮如果傳入的對象是從預期的類派生的類的時候會發生什麼。在克隆的情況下,新對象將與原始對象相同;在複製構造函數的情況下,它將是預期的類。在某些情況下,一種行爲是正確的,另一種行爲是錯誤的,在不同情況下需要不同的行爲。 – supercat 2011-02-23 18:17:57