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

Inner class generics - Incompatible types

我似乎不明白为什么我知道这些是不兼容的类型,是因为它们处于不同的 class 级别吗?我就是不太明白为什么。

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

}

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

以下应按原样工作:

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,那么就需要提供自己的通用参数。