2010-09-28 21 views
6

Pour une classe CS, j'écris une implémentation de liste chaînée d'une interface de liste chaînée créée par mon professeur. L'affectation nous oblige à utiliser des génériques pour la liste. Ce que j'ai créé, je pense, est assez standard.Java Generics 'Incompatible Type' Erreur de compilation

public class MyLinkedList<T> implements ADTListInterface { 
    ... 
    private class Node<T> { 
     Node<T> head; 
     Node<T> prev; 
     public Node(int max) { 

     ... 

     } 

     public void shift() { 
      ... 
      Node<T> newNode = new Node<T>(this.max); 
      newNode.prev = head.prev; 
      ... 
     } 

    } 

    ... 

} 

Au moment de la compilation erreur suivante est générée:

MyLinkedList.java:111: incompatible types 
    found : MyLinkedList<T>.Node<T> 
    required: MyLinkedList<T>.Node<T> 
newNode.prev = head.prev; 

Cette erreur m'a très confus. Quelqu'un peut-il m'expliquer quel est le problème?

Répondre

7

Voici probablement le problème:

private class Node<T> { 

Le <T> pose des problèmes supplémentaires. Parce que Node est une classe interne, il n'a pas besoin de déclarer à nouveau son type générique.

Vous devriez déclarer la classe Node comme ci-dessous:

public class MyLinkedList<T> implements ADTListInterface { 
... 
private class Node { 
    Node head; 
    Node prev; 
    public Node(int max) { 

    ... 
} 
+0

Problème résolu, merci! – objectivesea

+0

@Hurpe, heureux d'aider. – jjnguy