Страницы

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

среда, 29 января 2020 г.

Что происходит в цикле foreach при передаче циклу не ссылки на коллекцию, а метода, возвращающего коллекцию?

#java #foreach


Выполняется ли метод "values()" при каждой итерации цикла, или же он выполняется
всего один раз?

for(String s : values()) {
    //doSmth
}

    


Ответы

Ответ 1



Для того, чтобы показать вам суть, я сделал такой класс. Если вы его запустите, то вы увидите, что выведется строка "x 1"(из метода), и только после нее другие(уже из цикла) - "1","1","1". То есть мы эксперементально доказали, что метод для получении коллекции вызывается только один раз - в начале. static int x=0; public static void main(String[] args){ for(Integer s : returnCollection(x)) { System.out.println(s); //выводится в цикле } } static ArrayList returnCollection(int x){ x++; System.out.println("x "+x); // выводится при вызове метода ArrayList r = new ArrayList<>(Arrays.asList(x,x,x)); return r; }

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

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