Страницы

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

четверг, 16 мая 2019 г.

Java цикл foreach

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


Ответ

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

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

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