Java: почему нельзя перебрать итератор?

Я читаюПочему итератор Java не является итерируемым? а такжеПочему перечисления не повторяемы?, но я до сих пор не понимаю, почему это:

void foo(Iterator<X> it) {
  for (X x : it) {
    bar(x);
    baz(x);
  }
}

не было возможно Другими словами, если я что-то упустил, вышеприведенное могло бы быть хорошим и правильным синтаксическим сахаром для:

void foo(Iterator<X> it) {
  for (X x; it.hasNext();) {
    x = it.next();
    bar(x);
    baz(x);
  }
}

Ответы на вопрос(6)

Ваш ответ на вопрос