Java子类列表不能作为超类列表返回

时间:2015-08-19 08:26:08

标签: java inheritance

关于继承 现在我有两个班级,

  1. 超级

    public class TestSuper {}
    
  2. 子类

    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;
        }
    }
    
  3. 我无法返回testSubList,错误为Type mismatch: cannot convert from List<TestSub> to List<TestSuper>。但为什么我可以返回testSub

1 个答案:

答案 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