Страницы

Поиск по вопросам

воскресенье, 1 марта 2020 г.

Java цикл foreach

#java


Есть функция foo, которая возвращает массив bar.
Будет ли одинакова последовательность работы у цикла foreach, если в качестве иттерируемого
объекта передать foo и bar? Будет ли вызваться функция foo каждый раз или условно закешируется? 
    


Ответы

Ответ 1



Работать будет одинаково. При вызове for (Object a : foo()) {} у вас сначала один раз вызовется метод, по результату которого пойдёт итерирование. foreach - всего лишь "синтаксический сахар" для создания итератора и дальнейшего его использования. Т.е. "под капотом" это: Iterator it = foo().iterator(); while(it.hasNext()) { it.next(); }

Комментариев нет:

Отправить комментарий