Синтаксис for(Type t : iterable)
действителен только для классов, которые реализуют Iterable<Type>
.
Итератор не реализует итеративный.
Вы можете выполнять итерации по таким вещам, как Collection<T>
, List<T>
или Set<T>
, поскольку они реализуют Iterable.
Следующий код эквивалентен:
for (Type t: list) {
// do something with t
}
и
Iterator<Type> iter = list.iterator();
while (iter.hasNext()) {
t = iter.next();
// do something with t
}
Причина, по которой это не стало возможным,потому что синтаксис for-each был добавлен в язык для абстрагирования Iterator
.Заставить цикл for-each работать с итераторами не получится, для чего был создан цикл for-each.