这是我的课程(它包含很多方法,但对于问题来说就足够了):

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,这意味着在包围类EntrepotChaineeImplT)上声明的类型参数在范围内。

您无需在T上重新声明Iterateur;这定义了另一个与TEntrepotChaineeImpl不同的T。由于T仍在范围内,因此您可以在implements子句中使用它。

private final class Iterateur implements Iterator<T>{

07-26 07:13