我在Eclipse中遇到一个奇怪的类型不匹配错误
Type mismatch: cannot convert from MyLinkedList.Node<Type> to MyLinkedList.Node<Type>
来自和来都是一样的。还是类型不匹配? :(
代码:
import java.util.Iterator;
public class MyLinkedList<Type> implements Iterable<Type> {
private Node<Type> head;
// default contructor initializes the null list
public MyLinkedList(){
head = null;
}
// Static Inner Node Class
private static class Node<Type>{
private Type data;
private Node<Type> next;
public Node(Type dataValue, Node<Type> nextNode){
this.data = dataValue;
this.next = nextNode;
}
}
@Override
public Iterator<Type> iterator() {
// TODO Auto-generated method stub
return null;
}
private class LinkedListIterator<Type>{
private Node<Type> nextNode;
public LinkedListIterator(){
///////////////////////////////// ERROR ///////////////////////////
nextNode = head;
}
}
}
如果我应用此演员,错误就会消失:
nextNode = (Node<Type>) head;
答案 0 :(得分:4)
非静态内部类LinkedListIterator在代码中定义了新的泛型类型Type
。但它实际上会从其外部类MyLinkedList
继承泛型类型。
只需将迭代器的类定义更改为
private class LinkedListIterator{
然后它应该工作。
只有静态内部类不继承泛型类型,因此Node
的泛型类定义是正确的。