一尘不染

Java如何将超类型列表转换为子类型列表?

java

例如,假设你有两个类:

public class TestA {}
public class TestB extends TestA{}

我有一个返回a的方法,List并且我想将列表中的所有对象都强制转换为,TestB以便最终得到a List<TestB>


阅读 451

收藏
2020-03-02

共1个答案

一尘不染

简单地铸造List<TestB>几乎可行;但这是行不通的,因为你不能将一个参数的泛型类型转换为另一个参数。但是,你可以强制转换中间通配符类型,并且将允许它(因为你可以强制转换为通配符类型或从通配符类型强制转换,只是带有未选中的警告):

List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;
2020-03-02