Если параметр универсального типа внутреннего класса ListIterator
должен совпадать с параметром типа включающего класса MyList
, вы не должны объявлять его дважды.
Изменить внутренний класс на:
private class ListIterator implements Iterator<Item>
Таким образом, типы first
и current
будут одинаковыми.
Как прокомментировал Майкл, вам придется изменить конструкцию экземпляра ListIterator
на:
public Iterator<Item> iterator() {
return new ListIterator();
}