Java泛型'不兼容类型'编译时错误

obj*_*sea 6 java generics inner-classes

对于CS类,我正在编写由我的教授创建的链接列表界面的链表实现.该作业要求我们使用泛型作为列表.我认为,我所创造的是非常标准的.

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

    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

在编译时生成以下错误:

MyLinkedList.java:111: incompatible types
   found   : MyLinkedList<T>.Node<T>
   required: MyLinkedList<T>.Node<T>
newNode.prev = head.prev;
Run Code Online (Sandbox Code Playgroud)

这个错误让我非常困惑.任何人都可以向我解释问题是什么?

jjn*_*guy 7

这可能是问题所在:

private class Node<T> {
Run Code Online (Sandbox Code Playgroud)

<T>引起了额外的问题.因为Node是内部类,所以不需要再次声明其泛型类型.

您应该声明Node如下所示的类:

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

    ...
}
Run Code Online (Sandbox Code Playgroud)