Java Core middle
final — класс, метод, поле?
Ответ
Класс — нельзя наследовать (String, Integer). Метод — нельзя переопределить. Поле — нельзя переприсвоить ссылку, но можно менять внутреннее состояние (final List — можно add/remove). effectively final — нужна для лямбд.
Разбор: final у класса блокирует наследование, у метода — переопределение, у поля — переприсвоение ссылки, но внутреннее состояние объекта по этой ссылке менять можно (final List допускает add/remove); effectively final — переменная, фактически не меняющаяся, нужна для захвата в лямбдах/анонимных классах. Дистракторы путают неизменяемость ссылки с неизменяемостью объекта, подменяют переопределение перегрузкой и приписывают effectively final роль static-инициализации или transient.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.