2010-09-28 14 views
6

Dla klasy CS piszę listę połączonych implementacji połączonego interfejsu listy utworzonego przez mojego profesora. Przypisanie wymaga od nas użycia generycznych dla listy. To, co stworzyłem, wydaje mi się dość standardowe.Niekompatybilny typ języka Java Generics "Błąd kompilacji

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; 
      ... 
     } 

    } 

    ... 

} 

W czasie kompilacji następujący błąd jest generowany:

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

Ten błąd ma mnie bardzo zmieszany. Czy ktoś może mi wyjaśnić, na czym polega problem?

Odpowiedz

7

Oto prawdopodobnie problem:

private class Node<T> { 

<T> powoduje dodatkowe problemy. Ponieważ Node jest klasą wewnętrzną, nie musi ponownie deklarować swojego rodzaju.

powinien zadeklarować klasę Node jak poniżej:

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

    ... 
} 
+0

Problem rozwiązany, dzięki! – objectivesea

+0

@Hurpe, cieszymy się z pomocy. – jjnguy