Pascal4eg

 Java | Фишки и трюки

Запись (record)

public record Point (int x, int y) { }

public static void main(String[] args) {
    Point point = new Point(100, 100);
    System.out.println(point);
}
// Point[x=100, y=100]

📝 Запись (record) — это класс, объявленный с ключевым словом record вместо ключевого слова class. Запись служит контейнером неизменяемых данных и предназначена для лаконичного описания DTO (Data Transfer Object).

Класс, который компилятор создает для вас при создании записи, является окончательным (final).

Этот класс расширяет класс java.lang.Record. Таким образом, ваша запись не может расширять какой-либо класс.

Запись, как и класс, может реализовывать любое количество интерфейсов.

Блок, который следует сразу за именем записи, — (int x, int y) объявляет компоненты записи. Для каждого компонента записи компилятор создает private final поле и метод доступа к нему с тем же именем, что и у этого компонента. В записи может быть объявлено любое количество компонентов.

Компилятор сам создаёт конструктор со всеми перечисленными компонентами записи, а так же реализует методы toString(), equals() и hashCode() с реализацией по умолчанию.

record появился в Java 16.