Java 如何将泛型子类型列表转换为特定子类型列表?

Java 如何将泛型子类型列表转换为特定子类型列表?,java,list,generics,wildcard,subtype,Java,List,Generics,Wildcard,Subtype,假设类B扩展类A,我们有 List<? extends A> list1; List<B> list2; 列表列表列表2=(列表)列表1 从list2获取元素时,您必须处理编译器警告和可能的ClassCastExceptions,简单地说,不 原因是编译器没有任何证据表明list1元素的运行时类型将是B(或B的任何子类型)。它们可能是C扩展A,这可能导致运行时出现ClassCastExceptions 但是,您始终可以遍历list1,并通过执行强制转换将所有元素添加到l

假设类
B
扩展类
A
,我们有

List<? extends A> list1;
List<B> list2;
列表
列表列表2=(列表)列表1

list2
获取元素时,您必须处理编译器警告和可能的
ClassCastExceptions
,简单地说,不

原因是编译器没有任何证据表明
list1
元素的运行时类型将是
B
(或
B
的任何子类型)。它们可能是
C扩展A
,这可能导致运行时出现
ClassCastException
s


但是,您始终可以遍历
list1
,并通过执行强制转换将所有元素添加到
list2
(当然,前提是您确信这些类型是兼容的)。然而,即使它可以工作,这也是一个糟糕设计的标志。

不幸的是,没有;-)@瓦汉:如果你的问题得到了回答,请在回答后加上记号。