Это потому, что 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;
}
}
}
Если бы Node
было static
, то было бы необходимо предоставить его собственныйуниверсальный параметр.