Language Начинающий

Одна строка заменяет более 30 строк шаблонного кода для неизменяемых носителей данных.

✕ Java 8
public class Point {
    private final int x, y;
    public Point(int x, int y) { ... }
    public int getX() { return x; }
    public int getY() { return y; }
    // equals, hashCode, toString
}
✓ Java 16+
public record Point(int x, int y) {}
Заметили проблему в этом коде? Сообщите нам.

Однострочное определение

Одна строка заменяет конструктор, геттеры, equals, hashCode, toString.

🔒

Неизменяемость по умолчанию

Все поля final — никаких ловушек с сеттерами.

🧩

Дружественность к паттернам

Записи работают с паттернами деструктуризации в switch и instanceof.

Старый подход
Многословный POJO
Современный подход
record
Начиная с JDK
16
Сложность
Начинающий
Записи для классов данных
Доступно

Доступно в JDK 16 (март 2021)

Записи автоматически генерируют конструктор, аксессоры (x(), y()), equals(), hashCode() и toString(). Они неизменяемы по своей природе и идеально подходят для DTO, объектов-значений и pattern matching.