Почему Iterable и Iterator находятся в разных пакетах?

Iterable находится в java.lang , тогда как Iterator находится в java .util . Есть ли для этого веская причина или это просто артефакт плохого дизайна?

Это кажется странным, поскольку единственное, для чего подходит Iterable , - это предоставление Iterator < E> .

РЕДАКТИРОВАТЬ : Одна потенциальная причина - из-за (тогда -) недавно введенного для каждого цикла. Я предполагаю, что мой вопрос будет в том, эквивалентны ли они?

for(Object o : collection)
    ...
vs
for( Iterator iter = collection.iterator(); iter.hasNext(); ) {
    o = iter.next();
    ...

Если да, то это все еще не объясняет, почему два класса находятся в разных пакетах, поскольку компилятор должен импортировать java.util в любом случае использовать конструкцию Iterator .

10
задан tskuzzy 2 August 2011 в 02:29
поделиться