Ответ
Record — это специальный неизменяемый класс в Java (финализирован в Java 16), предназначенный для хранения данных. Он автоматически генерирует канонический конструктор, методы equals(), hashCode(), toString() и геттеры для всех полей, что устраняет шаблонный код.
Пример объявления и использования:
record Person(String name, int age) {}
Person person = new Person("Alice", 30);
System.out.println(person.name()); // Alice (геттер)
System.out.println(person); // Person[name=Alice, age=30] (toString)
System.out.println(person.equals(new Person("Alice", 30))); // true
Ключевые особенности:
- Все поля являются
private finalи объявляются в заголовке записи. - Record неявно объявляется как
finalи не может наследовать другие классы, но может реализовывать интерфейсы. - Можно добавлять статические поля/методы, компактные конструкторы и методы экземпляра.
- Нельзя добавлять нестатические поля, кроме объявленных в заголовке.
- Основная цель — моделировать прозрачные носители данных (Data Carriers).