java.util.Iterator und java.lang.Iterable sind zwei unterschiedliche Interfaces und keines von beiden erweitern (i.e. sind Subtypen) des jeweils andere.
Es ist nur so, dass java.lang.Iterable eine Methode `iterator` hat, die ein java.util.Iterator zurückliefert.
Und man kann eine Instanz einer Klasse, die java.lang.Iterable implementiert, seit Java 1.5 als zu iterierendes Objekt in einer "Enhanced For-Loop" verwenden, da der Java Compiler hier automatisch einen Aufruf an java.lang.Iterable.iterator() generiert und den zurückgelieferten Iterator benutzt, um die Iteration der Schleife zu realisieren.