2010-09-28 13 views
6

Para una clase de CS, estoy escribiendo una implementación de lista enlazada de una interfaz de lista enlazada creada por mi profesor. La tarea requiere que usemos genéricos para la lista. Lo que he creado, creo, es bastante estándar.Java Generics 'Incompatible Type' Error de tiempo de compilación

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

    } 

    ... 

} 

En tiempo de compilación siguiente error se genera:

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

Este error me tiene muy confundido. ¿Alguien puede explicarme cuál es el problema?

Respuesta

7

Aquí es probablemente el problema:

private class Node<T> { 

El <T> está causando problemas adicionales. Como Node es una clase interna, no necesita declarar su tipo genérico nuevamente.

Usted debe declarar la clase Node, como a continuación:

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

    ... 
} 
+0

Problema resuelto, gracias! – objectivesea

+0

@Hurpe, me alegro de ayudar. – jjnguy