Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> xs = List.of(1, 2, 3);
int total = 0;
xs.forEach(x -> total += x);
System.out.println(total);
}
}Не скомпилируется
- Ждать
6: лямбда — не тело цикла, она может читать локальные переменные метода, но не менять их, поэтомуtotal += xне компилируется. - Ждать ошибку только при вызове
forEach: правило о фактически финальных переменных проверяет компилятор, и программа не запускается.
- Как сложить элементы списка, не меняя локальную переменную из лямбды?
- Зачем Java требует, чтобы локальная переменная в лямбде была фактически финальной?