无法在子类中解析泛型类型变量

Generic type variable cannot be resolved in subclass

我正在尝试扩展此摘要 class。

import java.util.*;

public abstract class FilteredIterator<E1, E2> implements Iterator<E1>
{
  protected Iterator<E1> baseIterator;
  protected List<E2> filterValue;

  public FilteredIterator( Iterator<E1> baseIterator, List<E2> filterValue )
  {
    this.baseIterator = baseIterator;
    this.filterValue = filterValue;
  }
}

。 . .

import java.util.*;

public class FilteredIteratorImpl extends FilteredIterator<E1, E2>{

  public FilteredIteratorImpl(){
     super();
  }

执行此操作时,我收到错误消息 'E1 cannot resolve to a type'、'E2 cannot resolve to a type' 和 'The constructor FilteredIterator(Iterator, List) refers to the missing type E1'。

我尝试在扩展行、超级构造函数和 FilteredIteratorImpl 构造函数中用实际参数替换 E1 和 E1。我还尝试在 FilteredIteratorImpl 中为 E1 和 E2 声明这些变量,尽管我很确定我不需要这样做,因为它们是在抽象方法中声明的。谁能帮我解决这个问题?

类型参数的范围是声明 class(或方法)。换句话说,FilteredIteratorImpl 无法访问在 FilteredIterator.

中声明的类型参数

如果您的意思是 FilteredIteratorImpl 是通用的,您需要这样声明它

class FilteredIteratorImpl<E1, E2> extends FilteredIterator<E1, E2> {

并提供适当的构造函数。

如果它不是通用的,则需要在 extends 子句中指定类型参数

class FilteredIteratorImpl extends FilteredIterator<String, Integer> { // or whatever