Что такое record в Java?

«Что такое record в Java?» — вопрос из категории Java Core, который задают на 22% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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).