2016-03-21 6 views
0

Dies ist meine Klasse (es viel mehr Methode enthalten, aber für das Problem seiner genug):LinkedList und 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(); 
    } 

} 

Das Problem ist, erhalte ich diesen Fehler an den Konstruktor von Iterrateur: Typenkonflikt: kann nicht konvertieren von Knoten T erweitert NombreExemplaires zu Knoten T erweitert NombreExemplates

Ich sehe wirklich nicht warum. thx für die Hilfe

Antwort

1

Ihre innere Klasse Iterateur nicht static, was bedeutet, dass Typ-Parameter auf der einschließenden Klasse deklariert EntrepotChaineeImpl (T) im Rahmen sind.

Sie müssen T unter Iterateur nicht erneut deklarieren; dies definiert ein anderes T, das sich von EntrepotChaineeImplT unterscheidet. Da T immer noch im Bereich ist, können Sie es einfach in der implements Klausel verwenden.

private final class Iterateur implements Iterator<T>{ 
+0

thx ich bekomme es. ich schätze – marcAndreG

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

sollte

private final class Iterateur implements Iterator<T>{ 

Gerade jetzt haben Sie zwei verschiedene Variablen vom Typ namens T, eine die andere beschattet.

+0

du bist gott verdammt richtig thx mann – marcAndreG