Компактный конструктор record в Java
Иногда перед сохранением компонентов нужна проверка или правка значений. Для этого в теле record пишут компактный конструктор: заголовок совпадает с именем типа, параметры не перечисляют - в теле доступны имена компонентов как локальные переменные:
record Post(String title, int views) {
public Post {
if (views < 0) {
throw new IllegalArgumentException("views");
}
}
}
Создадим запись с нормальным числом просмотров и выведем его:
Post post = new Post("News", 12);
System.out.println(post.views());
В компактном конструкторе можно изменить значение компонента перед тем, как компилятор запишет его в поле. Часто так нормализуют строки:
Post post = new Post(" News ", 5);
System.out.println(post.title());
После блока проверок компилятор сам выполняет
присваивание this.компонент = компонент
для каждого поля заголовка. Явно писать
this.title = title в компактном
конструкторе не нужно:
Post post = new Post("", 0);
System.out.println(post.title());
Сделайте record Employee с компонентами
name и salary.
В компактном конструкторе запретите оклад
меньше 0. Создайте сотрудника с окладом
50000 и выведите salary().
Сделайте record Employee с компонентами
title и views.
В компактном конструкторе обрежьте пробелы
у title. Создайте публикацию
" Tips " и выведите заголовок.