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