LinkedList和迭代器

时间:2016-03-21 22:01:19

标签: java linked-list iterator

这是我的课程(它包含更多的方法,但问题就足够了):

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的帮助

2 个答案:

答案 0 :(得分:1)

private final class Iterateur<T extends NombreExemplaires> implements Iterator<T>{

应该是

private final class Iterateur implements Iterator<T>{

现在你有两个名为T的不同类型变量,一个影响另一个。

答案 1 :(得分:1)

您的内部类Iterateur不是static,这意味着在封闭类EntrepotChaineeImplT)上声明的类型参数在范围内。

您无需在T上重新声明Iterateur;这定义了另一个与T的{​​{1}}不同的EntrepotChaineeImpl。由于T仍在范围内,因此您只需在T子句中使用它。

implements