Мутируемые объекты - такие объекты, в которых проходят любые процессы изменения состояния.
Ключевое слово final
- используется для того, чтобы запретить изменять объект. Для примитивов final делает постоянным присвоенное значение. Для ссылки на объект - постоянной становится ссылка. Вся информация, которая находится в каждом объекте, устанавливается во время создания объекта и остается в таком состоянии до конца жизни объекта.
Сложные объекты(не примитивы), которые содержат в себе различные поля, будут полностью неизменяемые, если каждое поле объекта пометить как final
. Иначе только ссылка на объект будет неизменяемой, чего не скажешь про содержимое объекта.
blank finals - поля классов, которые помечены как final, но не инициализированы. Перед использованием эти поля нужно в любом случае инициализировать (один только раз).
Помечая метод как final
- мы говорим что его нельзя будет переопределить.
Помечая класс как final
- мы косвенно запрещаем переопределять все методы класса, поскольку такой класс не поддается наследованию.
// немного информации про многопоточность и масштабируемость, хоть про нее будет идти речь позже
Важно написать распределённую многопоточную программу. В таком случае программа может быть разбита на кластеры, то есть одну сложную программу можно разложить на нескольких разных машинах, в соответствии с потребностями. Изменяемые объекты - почти всегда плохое решение; там, где можно от них отказаться нужно писать неизменяемые объекты.
// I try to make as many things immutable as possible.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт