[英]linked list iterator inner class-java
我正在編寫一個迭代列表的迭代器內部類。 除了remove方法,我相信我已經正確實現了迭代器的所有方法,但是我收到一條錯誤消息:“綁定不匹配:類型E不是類型List.Node的有界參數>的有效替代品”。 我相信必須在我的代碼頂部使用Node>實現Iterable,但是如果不需要的話,我不想更改它。 關於應該怎么做的任何建議?
public class List<T extends Comparable<L>> implements Iterable<L> {
private class Node<N extends Comparable<N>> {
private N data;
private Node<N> next;
}
protected Node<L> head;
public Iterator<L> iterator() {
return new ListIterator<L>();
}
public class ListIterator<E extends Comparable<E>> implements Iterator<E> {
private Node<E> N = (Node<E>) head; //"Bound mismatch: The type E is not a valid substitute for the bounded parameter <D extends Comparable<D>> of the type List<T>.Node<D>"
public boolean hasNext() {
return (N.next != null);
}
public E next() {
if (!hasNext())
throw new NoSuchElementException();
else {
N = N.next;
return N.data;
}
}
public void remove() {
}
}
}
您應該減少泛型類型的數量。 因為內部類知道其父類的通用類型,所以應簡化Node和ListIterator類:
public class List<L extends Comparable<L>> implements Iterable<L> {
private class Node {
private L data;
private Node next;
}
protected Node head;
public Iterator<L> iterator() {
return new ListIterator();
}
public class ListIterator implements Iterator<L> {
private Node N = head;
public boolean hasNext() {
return (N.next != null);
}
public L next() {
if (!hasNext())
throw new NoSuchElementException();
else {
N = N.next;
return N.data;
}
}
public void remove() {
}
}
}
類型參數N
聲明為
N extends Comparable<N>
即。 它有界限。 它必須與其自身Comparable
。
類型參數E
聲明為
E
即。 它沒有界限。 它可以是任何類型,但不一定是Comparable
自身Comparable
的類型。
因此,不能在期望N
地方使用E
考慮將與N
相同的范圍添加到E
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.