Records в Java — это специальный вид классов, введённый в Java 14 (в preview) и финализированный в Java 16, чтобы уменьшить boilerplate-код при создании простых immutable data-классов.
Они отлично подходят для:
- DTO
- моделей запросов/ответов REST API
- value objects (например, координаты, имена и т.д.)
Пример:
record Book(String title, double price) {}
Book book = new Book("Cracking The java Interviews", 429.0);
System.out.println(book); // Book[title= Cracking The java Interviews, price=429.0]Что Records дают автоматически
Если объявить:
record Person(String name, int age) {}Java автоматически сгенерирует:
- конструктор
- геттеры (
name(), age())-
equals() и hashCode()- метод
toString()Ограничения Records:
- поля неявно
final- нельзя объявить конструктор без аргументов
- нельзя наследоваться от других классов (record неявно наследует
java.lang.Record)- нельзя изменять поля после создания объекта
- поверхностная неизменяемость: вложенные изменяемые объекты (например,
List) всё ещё могут изменяться👉 Java Portal