Обобщения класса: несовместимые типы - PullRequest
0 голосов
/ 17 мая 2018

Я просто не могу понять, почему я получаю, что это несовместимые типы, просто потому что они на разных уровнях классов? Я просто не могу понять, почему.

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 голосов
/ 17 мая 2018

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

...