2010-09-28 4 views
6

Для класса CS Я пишу реализацию связанного списка интерфейса связанного списка, созданного моим профессором. Назначение требует от нас использования дженериков для списка. То, что я создал, я думаю, довольно стандартно.Ошибка компиляции Java Generics «Несовместимый тип»

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

    } 

    ... 

} 

Во время компиляции следующей ошибки генерируется:

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

Эта ошибка имеет меня очень смущен. Может кто-нибудь объяснить мне, в чем проблема?

ответ

7

Здесь, вероятно, проблема:

private class Node<T> { 

<T> вызывает дополнительные проблемы. Поскольку Node является внутренним классом, ему не нужно снова объявлять свой общий тип.

Вы должны объявить Node класс, как показано ниже:

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

    ... 
} 
+0

Проблема решена, спасибо! – objectivesea

+0

@ Hurpe, рад помочь. – jjnguy

Смежные вопросы