这是我的课程(它包含更多的方法,但问题就足够了):
public class EntrepotChaineeImpl<T extends NombreExemplaires> implements EntrepotTda<T> {
private Node<T> head;
private Node<T> tail;
private int places;
private int maxPlaces;
public EntrepotChaineeImpl(int nbPlacesMaximum) {
// TODO Auto-generated constructor stub
head= null;
tail = null;
this.maxPlaces = maxPlaces;
places= 0;
}
@Override
public Iterateur<T> iterator() {
// TODO
return new Iterateur();
}
private final class Iterateur<T extends NombreExemplaires> implements Iterator<T>{
private Node<T> aNode;
public Iterateur(){
aNode = head; //<---THE ERROR
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
@Override
public T next() {
// TODO Auto-generated method stub
return null;
}
@Override
public void remove() {
// TODO Auto-generated method stub
Iterator.super.remove();
}
}
问题是,我在Iterrateur的构造函数上得到了这个错误: 类型不匹配:无法从节点T扩展NombreExemplaires到节点T扩展NombreExemplaires
我真的不明白为什么。 thx的帮助
答案 0 :(得分:1)
private final class Iterateur<T extends NombreExemplaires> implements Iterator<T>{
应该是
private final class Iterateur implements Iterator<T>{
现在你有两个名为T
的不同类型变量,一个影响另一个。
答案 1 :(得分:1)
您的内部类Iterateur
不是static
,这意味着在封闭类EntrepotChaineeImpl
(T
)上声明的类型参数在范围内。
您无需在T
上重新声明Iterateur
;这定义了另一个与T
的{{1}}不同的EntrepotChaineeImpl
。由于T
仍在范围内,因此您只需在T
子句中使用它。
implements