РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
51 of 1163 menu

Объявление record

Объявление record создает специальный тип класса, предназначенный для хранения неизменяемых данных. В заголовке объявления после имени record в круглых скобках перечисляются компоненты - поля, из которых состоит запись. Для каждого компонента компилятор автоматически создает приватное финальное поле, конструктор, метод доступа (имя совпадает с именем компонента), а также методы equals, hashCode и toString.

Синтаксис

public record ИмяЗаписи(Тип1 имя1, Тип2 имя2, ...) { // дополнительные методы и конструкторы }

Пример

Давайте создадим простую запись с двумя компонентами и выведем ее на экран:

public class Main { public record Point(int x, int y) {} public static void main(String[] args) { Point p = new Point(1, 2); System.out.println(p); } }

Результат выполнения кода:

"Point[x=1, y=2]"

Пример

Давайте обратимся к компонентам записи через автоматически сгенерированные методы доступа:

public class Main { public record Point(int x, int y) {} public static void main(String[] args) { Point p = new Point(1, 2); System.out.println(p.x()); System.out.println(p.y()); } }

Результат выполнения кода:

1 2

Пример

Давайте добавим в запись собственный метод и компактный конструктор для валидации:

public class Main { public record Point(int x, int y) { public Point { if (x < 0 || y < 0) { throw new IllegalArgumentException("Coordinates must be non-negative"); } } public int sum() { return x + y; } } public static void main(String[] args) { Point p = new Point(1, 2); System.out.println(p.sum()); } }

Результат выполнения кода:

3

Смотрите также

  • объявление class,
    которое создает обычный класс
  • объявление record-component,
    которое описывает компоненты записи
  • объявление compact-ctor,
    которое задает компактный конструктор
  • объявление enum,
    которое создает перечисление
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить