В лямбда-выражениях в Java можно обращаться к локальным переменным, объявленным во внешнем блоке. Однако такие переменные должны быть объявлены как final или effectively final. Это значит, что значение переменной не может быть изменено после присвоения. Например, следующий код корректен, потому что переменная i объявлена как final: final int i = 42;
Runnable r = () -> System.out.println("The answer is " + i); А вот следующий код выдаст...
В Java переменные final могут быть инициализированы только один раз. Инициализация final переменных может происходить как при их объявлении, так и в конструкторе класса. Важно отметить, что не инициализированная final переменная является ошибкой во время компиляции. Если final переменная имеет ссылочный тип данных, то после ее инициализации вы можете изменять ее содержимое, но нельзя присвоить ей новое значение: public class Example {
final int x = 1; // объявление и инициализация final переменной...