2010-09-28 22 views
6

Per una classe CS Sto scrivendo un'implementazione di lista collegata di un'interfaccia dell'elenco collegato creata dal mio professore. Il compito ci impone di usare i generici per la lista. Quello che ho creato, penso, è piuttosto standard.Errore in fase di compilazione di Java Generics 'Incompatible Type'

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

    } 

    ... 

} 

Al momento della compilazione seguente errore viene generato:

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

Questo errore mi ha molto confuso. Qualcuno può spiegarmi qual è il problema?

risposta

7

Qui è probabilmente il problema:

private class Node<T> { 

Il <T> sta causando ulteriori problemi. Poiché Node è una classe interna, non è necessario dichiarare di nuovo il tipo generico.

Si dovrebbe dichiarare la classe Node come di seguito:

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

    ... 
} 
+0

Problema risolto, grazie! – objectivesea

+0

@Hurpe, felice di aiutare. – jjnguy

Problemi correlati