簡體   English   中英

如何將通用子類型列表轉換為特定子類型列表?

[英]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.

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