В этом сообщении объясняется, что цикл foreach напрямую соответствует использованию итератора. Если я напишу цикл foreach, будет ли он буквально преобразован в for с итератором? В частности, данный цикл:
for(Integer i : createList()){
System.out.println(i);
}
Могу ли я всегда звонить createList()
только один раз, несмотря ни на что? Переписывается как:
for(Iterator<Integer> i = createList().iterator(); i.hasNext(); ) {
System.out.println(i.next());
}
на каком-то промежуточном этапе или просто получается тот же байт-код, что и выше?