内部 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;
}
}
}
如果Node
是static
,那么就需要提供自己的通用参数。
我似乎不明白为什么我知道这些是不兼容的类型,是因为它们处于不同的 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;
}
}
}
如果Node
是static
,那么就需要提供自己的通用参数。