Введение в records в Java
Record - короткая запись типа, который держит набор связанных полей: заголовок публикации и число просмотров, имя сотрудника и оклад, код товара и цена. Такие значения передают между методами, кладут в списки и карты, сравнивают между собой, не меняя уже созданный объект.
Обычный класс с полями в конструкторе уже знаком
по разделу про классы. Для двух экземпляров
с одинаковыми данными метод equals
без своей реализации сравнивает ссылки, а вывод
в консоль не показывает поля, пока не переопределить
toString. Для записей-контейнеров это
лишняя работа на каждый тип.
Ключевое слово record сообщает компилятору,
что тип нужен именно для данных. По списку компонентов
в заголовке генерируются конструктор, методы доступа,
equals, hashCode и toString -
подробнее в следующих уроках. Объявление выглядит так:
record Post(String title, int views) {}
Создадим запись и выведем заголовок вместе с числом просмотров:
Post post = new Post("News", 12);
System.out.println(post.title());
System.out.println(post.views());
После создания объект ведёт себя как контейнер данных: компоненты доступны через методы с тем же именем, лишней логики в типе нет. Record не заменяет иерархии с наследованием и абстрактные классы - он дополняет их там, где важнее содержимое полей, чем поведение отдельного типа.
Сделайте record Book с компонентами
title и pages.
Создайте книгу "Notes" на 120 страниц
и выведите на экран оба компонента в двух строках.
Сделайте record Coord с компонентами
x и y типа int.
Создайте точку new Coord(3, 7)
и выведите объект на экран одной командой
System.out.println.