Я пишу внутренний класс итератора, который выполняет итерацию по списку. Помимо метода remove, я считаю, что я правильно применил все методы итератора, но получаю сообщение об ошибке «Связанное несоответствие: тип E не является допустимым заменителем ограниченного параметра> типа List.Node». Я считаю, что это связано с тем, что Node> реализует Iterable в верхней части моего кода, но я не хочу изменять это, если не нужен. Любые возможные предложения о том, что я должен делать?связанный список итератор inner class-java
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() {
}
}
}
Хм, могу ли я сделать E расширять N тогда? –
@ Kracie Вам нужно будет иметь 'N', доступный в области' E'. –
Как мне это сделать? Я не думаю, что частные/общественные дела для N как внутренние классы могут видеть, что независимо, я думаю, –