关于继承 现在我有两个班级,
超级
public class TestSuper {}
子类
public class TestSub extends TestSuper{
private TestSub testSub;
private List<TestSub> testSubList;
public TestSuper getTestStub(){
return testSub;
}
public List<TestSuper> getTestStubList() {
//compile error here
return testSubList;
}
}
我无法返回testSubList
,错误为Type mismatch: cannot convert from List<TestSub> to List<TestSuper>
。但为什么我可以返回testSub
?
答案 0 :(得分:0)
您无法从列表&lt; A&gt; 到列表&lt; B> 。您必须单独迭代并转换每个元素。
public List<B> castAList(List<A> aList){
List<B> bList = new ArrayList<>();
for(A a : aList){
bList.add((B) a);
}
return bList;
}
另一种解决方案是利用通配符?
明确声明泛型中的继承。List<? extends SuperClass> superList