无法在子类中解析泛型类型变量
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
我正在尝试扩展此摘要 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