奇怪的类型不匹配错误

时间:2014-11-14 19:48:48

标签: java eclipse

我在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;

1 个答案:

答案 0 :(得分:4)

非静态内部类LinkedListIterator在代码中定义了新的泛型类型Type。但它实际上会从其外部类MyLinkedList继承泛型类型。 只需将迭代器的类定义更改为

即可
private class LinkedListIterator{

然后它应该工作。

只有静态内部类不继承泛型类型,因此Node的泛型类定义是正确的。