[英]How to convert list of generic subtypes to list of specific subtype?
假設B
類擴展了A
類,我們有
List<? extends A> list1;
List<B> list2;
有沒有一種方法可以在不運行所有元素的情況下將list1
分配給lsit2
?
List<B> list2 = (List<B>)list1
;
從list2
獲取Elements時,您將不得不處理編譯器警告以及可能的ClassCastExceptions
。
簡單地說,不。
其原因是,編譯器不具有任何證據表明運行時類型的list1
元件將被B
(或任何亞型B
)。 它們的類型可能是C extends A
,這可能會在運行時導致ClassCastException
。
但是,您始終可以遍歷list1
並通過強制轉換將所有元素添加到list2
(當然,只有在您確信類型兼容的情況下)。 即使可以使用,但這也表明設計不好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.