Обычный конструктор record в Java
Компактный конструктор удобен для проверок, но иногда
нужен обычный конструктор с полным списком параметров.
Его сигнатура совпадает с заголовком record, а в теле
значения передают полям через this:
record Post(String title, int views) {
public Post(String title, int views) {
this.title = title;
this.views = views;
}
}
Создадим запись Post с заголовком и просмотрами и выведем ее:
Post post = new Post("News", 12);
System.out.println(post);
Такой конструктор заменяет автоматически сгенерированный канонический. Логику инициализации можно разместить между присваиваниями или после них, если правила языка это допускают:
Post post = new Post("", 3);
System.out.println(post.title());
Явный конструктор и компактный с одним именем типа
одновременно не объявляют - выбирают один способ.
Обычный вариант нужен, когда требуется полный контроль
над каждым this.поле:
Post post = new Post("Alert", -1);
System.out.println(post.views());
Сделайте record Employee с компонентами
name и salary.
В явном конструкторе сохраните имя как есть,
а отрицательный оклад замените на 0.
Создайте сотрудника с окладом -100
и выведите salary().
Сделайте record Employee с компонентами
title и views
и явным каноническим конструктором.
Создайте new Employee("Guide", 40)
и выведите объект через println.