Ответ
Нет, запись (record) — это не просто совокупность полей, а специальный неизменяемый класс, предназначенный для прозрачного хранения данных.
Ключевые характеристики record (Java 16+):
- Неизменяемость (Immutable): Все поля объявляются как
private final. После создания состояние записи изменить нельзя. - Автоматическая генерация шаблонного кода: Компилятор создает:
- Канонический конструктор.
- Методы доступа (геттеры) с именами, совпадающими с именами полей (например,
name(), а неgetName()). - Реализации
equals(),hashCode()иtoString(), основанные на всех компонентах записи.
Пример объявления и использования:
// Объявление записи
record Point(int x, int y) {}
// Использование
Point p = new Point(5, 10);
System.out.println(p.x()); // 5 (геттер)
System.out.println(p.y()); // 10
System.out.println(p); // Point[x=5, y=10] (авто toString)
| Чем record отличается от простого класса с полями? | Аспект | Обычный класс | Record |
|---|---|---|---|
| Неизменяемость | Не гарантирована | Гарантирована | |
| Шаблонный код | Нужно писать вручную | Генерируется автоматически | |
| Назначение | Может содержать логику | Предназначен для данных (DTO, value objects) | |
| Наследование | Может наследовать и быть унаследованным | Неявно final, не может наследовать другие классы |
Вывод: Record — это семантическая конструкция для моделирования данных, которая обеспечивает безопасность, краткость и предсказуемость.