Return 超类型扩展列表中的子类型对象列表

Return list of subtype object from extended list of supertype

我声明了包含 ClassA 元素的列表:

public class SuperList<E> extends ArrayList<ClassA> {

  public SuperList<E> getSomeElements() {
    SuperList<E> resultList = new SuperList<>();
    // creating result list
    return resultList;
  }
}

我有一个 class ClassB:

public class ClassB extends ClassA  {
  // class definition
}

最后我 SuperList 有了 ClassB 的实例。我想通过方法 getSomeElements() 从中获取元素并迭代它:

SuperList<ClassB> bigList;

SuperList<ClassB> elements = bigList.getSomeElements();
for(ClassB element : elements){
  // do something
}

但是 IntelIJ 是这样说的:

Incompatibile types. Required: ClassB. Found: ClassA.

我能做到吗?

应该是

public class SuperList<E extends ClassA> extends ArrayList<E> {

    public SuperList<E> getSomeElements() {
        SuperList<E> resultList = new SuperList<>();
        // creating result list
        return resultList;
    }
}

那么,如果bigList是一个SuperList<ClassB>,编译器就会知道bigList.getSomeElements()也是一个SuperList<ClassB>