Объявление record
Объявление record создает специальный тип класса,
предназначенный для хранения неизменяемых данных.
В заголовке объявления после имени record в круглых скобках
перечисляются компоненты - поля, из которых состоит запись.
Для каждого компонента компилятор автоматически создает
приватное финальное поле, конструктор, метод доступа
(имя совпадает с именем компонента), а также методы
equals, hashCode и toString.
Синтаксис
public record ИмяЗаписи(Тип1 имя1, Тип2 имя2, ...)
{
// дополнительные методы и конструкторы
}
Пример
Давайте создадим простую запись с двумя компонентами и выведем ее на экран:
public class Main
{
public record Point(int x, int y) {}
public static void main(String[] args)
{
Point p = new Point(1, 2);
System.out.println(p);
}
}
Результат выполнения кода:
"Point[x=1, y=2]"
Пример
Давайте обратимся к компонентам записи через автоматически сгенерированные методы доступа:
public class Main
{
public record Point(int x, int y) {}
public static void main(String[] args)
{
Point p = new Point(1, 2);
System.out.println(p.x());
System.out.println(p.y());
}
}
Результат выполнения кода:
1
2
Пример
Давайте добавим в запись собственный метод и компактный конструктор для валидации:
public class Main
{
public record Point(int x, int y)
{
public Point
{
if (x < 0 || y < 0)
{
throw new IllegalArgumentException("Coordinates must be non-negative");
}
}
public int sum()
{
return x + y;
}
}
public static void main(String[] args)
{
Point p = new Point(1, 2);
System.out.println(p.sum());
}
}
Результат выполнения кода:
3
Смотрите также
-
объявление
class,
которое создает обычный класс -
объявление
record-component,
которое описывает компоненты записи -
объявление
compact-ctor,
которое задает компактный конструктор -
объявление
enum,
которое создает перечисление