Java: por que não pode iterar em um iterador?

Eu liPor que o Iterator do Java não é um Iterable? ePor que as enumerações não são iteráveis?, mas ainda não entendo por que isso:

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

não foi possível. Em outras palavras, a menos que esteja faltando alguma coisa, o acima poderia ter sido um açúcar sintático agradável e válido para:

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

questionAnswers(6)

yourAnswerToTheQuestion