内部类问题的一般用法

时间:2013-06-29 00:16:47

标签: java generics

我没有发布整个代码。我有这个:

public class LinkedList2<T extends Comparable<T>> implements Iterable<T> {

    private Node<T> head;
    private Node<T> tail;
    private int numOfElem;

    private class Node<T> {

        Node<T> next;
        T data;

        Node(Node<T> next, T data) {
            this.next = next;
            this.data = data;
        }
    }

    private class LinkedList2Iterator<T> implements Iterator<T> {
            private int count = LinkedList2.this.numOfElem;
            private Node<T> current = LinkedList2.this.head;
    }
}       

javac -Xlint LinkedList2.java我收到此错误:

LinkedList2.java:134: incompatible types
found   : LinkedList2<T>.Node<T>
required: LinkedList2<T>.Node<T>
        private Node<T> current = LinkedList2.this.head;
                                              ^
1 error
你能帮忙吗?

1 个答案:

答案 0 :(得分:5)

当您定义内部类LinkedList2Iterator时,您已使用另一个<T>泛型类型参数使其成为泛型。 <T>与外部<T>的{​​{1}}不匹配。

LinkedList2

你不需要在这里声明另一个private class LinkedList2Iterator<T> implements Iterator<T> { ,只需使用外部类中的<T>,它仍在范围内:

<T>