Generics Java 'Несовместимый тип' Ошибка во время компиляции - PullRequest
6 голосов
/ 29 сентября 2010

Для класса CS я пишу реализацию связанного списка интерфейса связанного списка, созданного моим профессором. Назначение требует, чтобы мы использовали дженерики для списка. То, что я создал, я думаю, довольно стандартно.

public class MyLinkedList<T> implements ADTListInterface {
    ...
    private class Node<T> {
        Node<T> head;
        Node<T> prev;
        public Node(int max) {

        ...

        }

        public void shift() {
            ...
            Node<T> newNode = new Node<T>(this.max);
            newNode.prev = head.prev;
            ...
        }

    }

    ...

}

Во время компиляции генерируется следующая ошибка:

MyLinkedList.java:111: incompatible types
   found   : MyLinkedList<T>.Node<T>
   required: MyLinkedList<T>.Node<T>
newNode.prev = head.prev;

Эта ошибка меня очень смущает. Может кто-нибудь объяснить мне, в чем проблема?

1 Ответ

7 голосов
/ 29 сентября 2010

Вот, вероятно, проблема:

private class Node<T> {

<T> вызывает дополнительные проблемы. Поскольку Node является внутренним классом, ему не нужно снова объявлять свой универсальный тип.

Вы должны объявить класс Node, как показано ниже:

public class MyLinkedList<T> implements ADTListInterface {
...
private class Node {
    Node head;
    Node prev;
    public Node(int max) {

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...