Компонент record
Компонент record - это переменная, объявленная в заголовке записи (record). Каждый компонент автоматически становится private final полем, для него генерируется метод-аксессор с тем же именем, а также он участвует в конструкторе, методах equals, hashCode и toString. В первом параметре (в заголовке записи) мы передаем тип и имя компонента, во втором - следующий компонент, и так далее. Компоненты позволяют кратко описывать неизменяемые данные без написания шаблонного кода.
Синтаксис
public record RecordName(Type1 component1, Type2 component2, ...)
{
}
Пример
Давайте создадим запись Point с двумя компонентами x и y и выведем их значения через методы-аксессоры:
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
Пример
Давайте создадим запись User с компонентами name и age и проверим автоматически сгенерированный метод toString:
public class Main
{
public record User(String name, int age)
{
}
public static void main(String[] args)
{
User user = new User("abcde", 25);
System.out.println(user);
}
}
Результат выполнения кода:
User[name=abcde, age=25]
Пример
Давайте создадим запись Pair с компонентами first и second и сравним два объекта через метод equals:
public class Main
{
public record Pair(String first, String second)
{
}
public static void main(String[] args)
{
Pair p1 = new Pair("abcde", "12345");
Pair p2 = new Pair("abcde", "12345");
System.out.println(p1.equals(p2));
}
}
Результат выполнения кода:
true
Смотрите также
-
ключевое слово
record,
которое объявляет класс записи -
компактный конструктор
compact constructor,
который позволяет валидировать компоненты -
класс
class,
который является обычным объявлением класса -
интерфейс
interface,
который может быть реализован записью