繁体   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