【发布时间】:2014-03-12 22:16:43
【问题描述】:
我在 Java 中实现了一个双向链表,它实现了 Iterator 类。我有一个带有名为 DoublyLinkedListIterator 的内部类的 DoublyLinkedList 类,以帮助遍历列表。 (见下文)。
public Iterator<T> iterator() {
return new DoublyLinkedListIterator();
}
private class DoublyLinkedListIterator<E> implements Iterator<E> {
private Node<E> current;
private DoublyLinkedListIterator() {
current = DoublyLinkedList.this.head;
}
public boolean hasNext() {
return (current != null);
}
public Node<E> next() {
Node<E> ret = null;
if (hasNext()) {
ret = current;
current = current.next();
return ret;
}
else {
throw new java.util.NoSuchElementException("No next element.");
}
}
public void remove() {
throw new UnsupportedOperationException("Can't remove");
}
}
}
在上面,我试图通过创建迭代器的实例来获取下一个值,就像这样......
current = iterator.next();
(current 是 Node 类型)
由于某种原因,我不断收到此错误:
DoublyLinkedList.java:62: error: incompatible types
current = iterator.next();
^
required: Node<T>
found: T
where T is a type-variable:
T extends Object declared in class DoublyLinkedList
有什么想法吗?
【问题讨论】:
-
如果你实现
Iterator<E>,你必须提供一个返回E的next()。我只看到一个返回Node<E>的next()。 -
显示的代码中不包含错误中的行。
标签: java generics iterator linked-list iterable