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
(当然,前提是您确信这些类型是兼容的)。然而,即使它可以工作,这也是一个糟糕设计的标志。不幸的是,没有;-)@瓦汉:如果你的问题得到了回答,请在回答后加上记号。