Модификатор final
Поле, объявленное как final, должно быть инициализировано один раз — в объявлении, в блоке инициализации или в конструкторе. Дальнейшее присваивание вызывает ошибку компиляции.
Java Example
static final int MAX_SIZE = 16;
int currentSize = 0;
// MAX_SIZE = 32; — ошибка компиляцииНеизменяемость ссылки, а не объекта
final фиксирует только ссылку. Если объект изменяемый, его внутреннее состояние по-прежнему можно поменять.