Ответ
Records (записи) — это специальный вид классов в Java, представленный в Java 14 (предпросмотр) и окончательно в Java 16. Они предназначены для моделирования неизменяемых (immutable) данных, выступая компактной альтернативой шаблонным POJO-классам.
Для чего нужны:
- Сокращение шаблонного кода. Компилятор автоматически генерирует:
- Поля
final(private final) на основе заголовка записи. - Канонический конструктор.
- Методы доступа (геттеры) с именами, совпадающими с именами полей.
- Методы
equals(),hashCode()иtoString().
- Поля
- Гарантия неизменяемости. Все компоненты записи —
final, что делает экземпляры по умолчанию неизменяемыми и потокобезопасными. - Повышение читаемости. Явно декларирует, что класс является контейнером для данных.
Пример:
// Объявление record
public record Person(String name, int age) {}
// Использование
Person person = new Person("Alice", 30);
System.out.println(person.name()); // Геттер 'name()'
System.out.println(person); // Автоматический toString(): Person[name=Alice, age=30]
Сравнение: Такой функционал потребовал бы десятков строк в обычном классе.