【发布时间】:2012-02-17 22:20:59
【问题描述】:
编辑:
public class LinkedList<E> {
private class Node {
protected Node next, prev;
protected E data;
protected Node(E dat) {
data = dat;
next = prev = null;
}
}
private Node head, tail;
public LinkedList() {
(head = new Node(null)).next = tail = new Node(null);
tail.prev = head;
tail.next = head.prev = null;
}
public class LinkedListIterator {
private Node current = null;
public synchronized void resetToHead() {
current = head.next;
}
public synchronized void resetToTail() {
current = tail.prev;
}
public synchronized E get() {
if (current!=null) return current.data;
return null;
}
}
}
问题是我在强调的行上得到以下编译错误:
> Type mismatch: cannot convert from LinkedList<E>.Node<E> to
> LinkedList<E>.Node<E>
这是什么意思?我该如何解决这个问题?
顺便说一句,代码只是实现的一部分,所以不要试图从逻辑上弄清楚。
【问题讨论】:
-
没用,你也可以试试,代码是可编译的(除了我提到的错误)
-
除非
Node应该独立于LinkedList,否则不要将节点设为静态内部类。删除Node上的泛型参数,因为它隐藏了 LinkedList 中的外部泛型类型E。 -
这不是家庭作业,我将其作为我自己项目的一部分,以便使用更友好的用户链表(我不喜欢 Java 的)
-
好的。我已经删除了作业标签和我之前的评论。
标签: java generics compilation