Java: ¿por qué no puede iterar sobre un iterador?

Yo leo¿Por qué el Iterator de Java no es un Iterable? y¿Por qué no son las enumeraciones Iterable?, pero todavía no entiendo por qué esto:

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

No fue posible. En otras palabras, a menos que me falte algo, lo anterior podría haber sido un azúcar sintáctico agradable y válido para:

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta