内部类泛型 - 不兼容的类型

时间:2018-05-17 20:33:38

标签: java generics incompatibletypeerror

我似乎无法理解为什么我认为这些是不兼容的类型,它只是bc他们在不同的班级?我只是不明白为什么。

public class PrependLinearListImpl<T>{
    private Node<T> first;

    private class Node<T> {
        private T head;
        private Node<T> tail;
        Node(T head) {
            this.head = head;
            this.tail = first;
            first = this;
        }
    }

}

1 个答案:

答案 0 :(得分:4)

这是因为PrependLinearListImpl<T>.Node已经从其外部类继承了泛型参数。没有必要重新定义通用组件。

以下内容应该按原样运行:

public class PrependLinearListImpl<T>{
    private Node first;

    private class Node {
        private T head;
        private Node tail;
        Node(T head) {
            this.head = head;
            this.tail = first;
            first = this;
        }
    }

}

如果Nodestatic,则需要提供自己的通用参数。