这是我的课程(它包含很多方法,但对于问题来说就足够了):
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的构造函数上收到此错误:
类型不匹配:无法从Node T扩展NombreExemplaires转换为Node T扩展NombreExemplaires
我真的不明白为什么。寻求帮助
最佳答案
内部类Iterateur
不是static
,这意味着在包围类EntrepotChaineeImpl
(T
)上声明的类型参数在范围内。
您无需在T
上重新声明Iterateur
;这定义了另一个与T
的EntrepotChaineeImpl
不同的T
。由于T
仍在范围内,因此您可以在implements
子句中使用它。
private final class Iterateur implements Iterator<T>{