私はジェネリックを学んでおり、一般的なリンクリストを作成したいと考えています。Javaの汎用リンクリスト
コンパイル時にエラーが発生しています。
Type mismatch: cannot convert from LinkedList<E>.Node<E> to LinkedList<E>.Node<E>
public class LinkedList<E> {
private Node<E> head = null;
private class Node<E> {
E value;
Node<E> next;
// Node constructor links the node as a new head
Node(E value) {
this.value = value;
this.next = head;//Getting error here
head = this;//Getting error here
}
}
public void add(E e) {
new Node<E>(e);
}
public void dump() {
for (Node<E> n = head; n != null; n = n.next)
System.out.print(n.value + " ");
}
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.add("world");
list.add("Hello");
list.dump();
}
}
私はこのエラーを取得していますなぜ私に教えてください?
'Node'ジェネリックを設定する必要はありません。内部クラスであるため、周囲のクラスの一般的性質のために汎用クラスになります。 – Turing85
内部クラスジェネリックタイプEを設定しているのは 'タイプパラメータEがタイプEを隠しているためです。 '(コンパイラ警告4行目) –