Générique Itérateur mise en œuvre en java

J'ai le dessin suivant:
J'ai une classe Abstraite Instance,
J'ai une classe Library qui s'étend Instance et
J'ai une classe File qui s'étend également Instance

J'ai créé ma propre liste liée de mise en œuvre et il est défini comme suit:

public class List<T extends Instance> implements Iterable {
    //some other code here

     public Iterator iterator(){
         return new ListIterator(this);

}

maintenant, j'ai créé une classe

public class ListIterator<T extends Instance> implements Iterator<T> {
    private List thisList;
    private Node current;

    public ListIterator(List l){
        thisList=l;
        current=thisList.head.next;
    }
    @Override
    public boolean hasNext() {
        if(current==null)
            return false;
        return false;
    }

    @Override
    public T next() {
        Node temp=current;
        current=current.next;
        return temp.data;
    }
}

Node est

public class Node<T extends Instance> {
    public Node<T> next;
    public Node<T> prev;
    public T data;

    public Node(T data,Node prev, Node next){
        this.data=data;
        this.prev=prev;
        this.next=next;
    }   
}

donc mon problème est comme suit: la ligne de retour temp.les données se lève une erreur:

Incompatibilité de Type - impossible de convertir de l'Instance de T.

Quel est le problème avec ce code?

Il sera plus facile de comprendre ce qui se passe si vous affichez le code de la classe de Nœud. Aussi... ce n'est pas... devoirs, est-il?
ce n'est pas de devoirs, pourquoi?
Parce que (1) si ce n'est pas les devoirs à la maison (ou au moins, d'étude privée), alors c'est probablement une mauvaise idée de mettre en place la Liste vous-même, et (2) si ont été pour les devoirs alors nous devrions être en vous aidant à apprendre à partir de l'erreur, plutôt que de vous donner la réponse dans une boîte.
Btw, si vous utilisez un IDE comme Eclipse, IntelliJ, etc, activez l'option pour vous avertir lorsque vous êtes à l'aide de matières plutôt les types de génériques. Elle vous donne un supplément de pointeur avec ce genre de problème. (Bien que si vous obtenez fortement dans les génériques, vous pourrez également venir à travers des mises en garde, vous ne pouvez pas vous débarrasser de. Les génériques sont une douleur.)
Une astuce de plus - alors, je vais arrêter de t'énerve lire Josh Bloch Effectif de Java, qui contient un élément d'explication (bien plus éloquente que j'ai pu) pourquoi vous ne devriez pas être la rédaction de votre propre Liste, sauf comme un exercice d'apprentissage, bien sûr. Josh Bloch, par ailleurs, a été l'un des ingénieurs qui a écrit en Java Collections de l'API.

OriginalL'auteur mary | 2011-12-15