Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

final

Запрещает менять переменную после присваивания, переопределять метод или наследовать класс.

Доступно с: Java 1.0

Синтаксис

final Type name = value;

Примеры

Константа — static final поле с именем заглавными буквами:

static final double VAT_RATE = 0.2;
 
void main() {
    final int price = 100;
    // price = 200;  // error: cannot assign a value to final variable price
    IO.println(price * (1 + VAT_RATE));
}

Результат:

120.0

final запрещает переприсвоить ссылку, но не менять сам объект:

void main() {
    final List<String> names = new ArrayList<>();
    names.add("Anna");
    names.add("Oleg");
    IO.println(names);
}

Результат:

[Anna, Oleg]

Примечания

У final три значения: у переменной — её нельзя переприсвоить, у метода — его нельзя переопределить в наследнике, у класса — от него нельзя наследоваться (так объявлен String).

Чтобы сам список нельзя было изменить, нужна неизменяемая коллекция, например List.of(...). Переменные, которые используются в лямбдах, должны быть final или «эффективно final» — не меняться после присваивания.

См. также

  • static — Делает поле или метод общим для всего класса, а не для отдельного объекта.
  • var — Объявляет локальную переменную, тип которой компилятор выводит из значения.
  • record — Объявляет запись — неизменяемый класс для хранения данных с готовыми equals(), hashCode() и toString().

Вопросы и ответы по теме

В учебнике

  • Переменные — Объявление переменных в Java: тип и имя, присваивание, var, константы final и правила именования.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.