我正在尝试构建ArrayList的扩展并为它构建一个自定义迭代器,所有这些都是泛型类型,并且我在编译之前遇到了我不理解的错误。
public class GenerateurBiGramme <T> extends ArrayList <T> {
public Iterator<Pair<T,T>> iterator(int delta){
return new BiGramme<>(delta);
}
public class BiGramme <T> implements Iterator<Pair<T, T>>{
int premier = 0;
int dernier = 1;
int delta;
public Pair<T, T> next() {
Pair<T,T> temp = new Pair<T,T>(get(this.debut),get(this.dernier));
return temp;
}
我的IDE告诉我&#34; Pair中的Pair(T,T)不能应用于(T,T)。
我不明白这意味着什么。
感谢您的帮助!
编辑: 这是我的&#34; Pair&#34; class:
public class Pair<T, U> {
public T premiere;
public U deuxieme;
public Pair( T premiere, U deuxieme ) {
this.premiere = premiere;
this.deuxieme = deuxieme;
}
}
基本上,我要把一张桌子送进发电机,我打算用#34; premier&#34;和&#34; dernier&#34;在彼此相距一定距离处创建成对...
答案 0 :(得分:2)
您的问题在于public class BiGramme <T>
声明,T
隐藏了您在T
中声明的public class GenerateurBiGramme <T>
。您现在有两个不同的类型参数GenerateurBiGramme.BiGramme
,但不幸的是,它们都被称为T
。
您不需要T
声明中的BiGramme
,因为它是一个内部类,因此它已经可以访问外部类的类型参数, GenerateurBiGramme
。只需将声明更改为public class BiGramme
,而不是T
。同时从第<>
行中删除return new BiGramme(delta);
。这对我有用。