Практика enum и sealed в Java
Задачи опираются на приёмы раздела: константы enum,
поля и конструктор enum, подтипы sealed с классами
и record, исчерпывающий switch без
default.
Объявите enum EmployeeStatus с константами
DRAFT, PUBLISHED и ARCHIVED.
Напишите метод isPublic(EmployeeStatus status):
для PUBLISHED верните true,
для остальных - false.
Выведите результат для EmployeeStatus.PUBLISHED.
Объявите enum Role с полем code:
GUEST(0), USER(1), ADMIN(2).
Дана переменная:
Role role = Role.USER;
С помощью switch выведите метку:
GUEST - "guest",
USER - "user",
ADMIN - "admin".
Объявите enum EmployeeType с полем
maxVacationDays:
INTERN(14), STAFF(28),
LEAD(35).
Выведите все пары "name:days"
в порядке values(), каждую с новой строки.
Объявите sealed class EmployeeResult permits EmployeeOk, EmployeeFail:
EmployeeOk как record с полем id,
EmployeeFail как record с полем code.
Напишите метод summary(EmployeeResult r):
для успеха верните строку "ok " и id,
для ошибки - "err " и code.
Выведите результат для new EmployeeFail(503).
Объявите sealed interface Employee permits NamedEmployee, GuestEmployee:
GuestEmployee - пустой final класс,
NamedEmployee - record с полем name.
Дано:
Employee employee = new NamedEmployee("Ann");
С помощью switch выведите "guest"
или имя сотрудника.
Объявите enum Role с константами
GUEST, USER, ADMIN.
Дана строка "USER".
Получите константу через valueOf,
затем в switch выведите "allowed"
для USER и ADMIN, "denied"
для GUEST.