Sobes.tech
Back to questions
Junior — Middle
55

Можно ли модифицировать внутреннее состояние объекта, сохраненного в переменной с ключевым словом final, через его сеттер?

Answer from AI

sobes.tech AI

В Java ключевое слово final при объявлении переменной означает, что ссылка на объект не может быть изменена — нельзя присвоить этой переменной другой объект после инициализации. Однако внутреннее состояние объекта, на который ссылается эта переменная, может быть изменено, если объект изменяемый и предоставляет методы для изменения состояния (например, сеттеры).

Пример:

final Person person = new Person("Иван", 25);
person.setAge(26); // Это допустимо, состояние объекта изменяется

// person = new Person("Пётр", 30); // Ошибка компиляции, нельзя изменить ссылку

Таким образом, final защищает только саму ссылку, но не делает объект неизменяемым.