簡體   English   中英

什么時候需要使用clone()方法?

[英]when casting is need for clone() method?

考慮下面的代碼:

ArrayList<Double> list1 = new ArrayList<>();
list1.add(1.5);
list1.add(2.5);
list1.add(3.5);
ArrayList<Double> list2 = (ArrayList<Double>)list1.clone();

Date[] list3 = {new Date(), new Date(4664316)};
Date[] list4 = list3.clone();

int[] list5 = {1, 2};
int[] list6 = list5.clone();

為什么list.clone()需要強制轉換,而list3.clone()和list5.clone()不需要強制轉換? 我知道數組和ArrayList之間的區別,但是不確定確切的原因。

請閱讀文檔

注意,所有數組都被認為實現了Cloneable接口,並且數組類型T []的clone方法的返回類型為T [],其中T是任何引用或原始類型。

但是在ArrayList中,將返回一個Object,因此需要強制轉換。

Clone()方法簽名返回一個對象類型。

按照慣例,此方法返回的對象應獨立於該對象(正在克隆)

因此,需要強制轉換。

數組的行為不同,並返回正確鍵入的克隆數組。 因此無需鑄造。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM