Java泛型没有返回正确的值
我正在用Java实现一个双链表,它实现了迭代器类。我有一个DoublyLinkedList类,它有一个名为DoublyLinkedListIterator的内部类来帮助遍历列表。(见下文) (其中当前为节点类型) 出于某种原因,我不断出现以下错误:Java泛型没有返回正确的值,java,generics,iterator,linked-list,iterable,Java,Generics,Iterator,Linked List,Iterable,我正在用Java实现一个双链表,它实现了迭代器类。我有一个DoublyLinkedList类,它有一个名为DoublyLinkedListIterator的内部类来帮助遍历列表。(见下文) (其中当前为节点类型) 出于某种原因,我不断出现以下错误: DoublyLinkedList.java:62: error: incompatible types current = iterator.next();
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
DoublyLinkedList.java:62:错误:类型不兼容
current=iterator.next();
^
必需:节点
发现:T
其中T是一个类型变量:
T扩展类DoublyLinkedList中声明的对象
有什么想法吗?迭代器接口定义为
public interface Iterator<E> {
[...]
E next();
[...]
}
公共接口迭代器{
[...]
E next();
[...]
}
你把它当作
private class DoublyLinkedListIterator<E> implements Iterator<E> {
私有类DoublyLinkedListIterator实现迭代器{
但是要把它作为
public Node<E> next() {
公共节点下一步(){
您不应该返回节点
,您应该返回一个E迭代器
包含一个方法E next()
。您没有声明这样的方法;您声明了节点next()
如果方便的话,尝试为E
插入一个具体类型。想象一下你有一个迭代器
。你不希望next()
返回一个字符串,而不是节点
?如果你实现迭代器
,你必须提供一个next()
返回E
。我只看到一个next()
返回节点
。您显示的代码中不包含错误中的行。或者是这样,或者他应该实现迭代器
,这取决于他想要什么。@ajb-Right。我会说很少有链接列表显示其内部。所以我尝试分配节点当前=迭代器。next();
但是我仍然得到相同的错误。next()返回的泛型类型不应该是节点吗?@user1493543next()
的返回类型是E
。您使用了什么作为类型参数E
的类型参数?您使用了E
,因此它不能是node
。
private class DoublyLinkedListIterator<E> implements Iterator<E> {
public Node<E> next() {