Практика на enum и sealed в Java
Сделайте enum Level
с константами LOW, MID
и HIGH. Дана переменная:
Level lv = Level.MID;
Выведите имя константы строчными буквами.
Сделайте enum EmployeeStatus
с полем code:
DRAFT("d"), LIVE("l"),
ARCHIVED("a").
Выведите code для EmployeeStatus.LIVE.
Сделайте enum Op
с константами PLUS и MINUS.
Напишите метод calc(int a, int b, Op op).
Выведите результат для 7, 3
и Op.MINUS.
Дан sealed class:
sealed interface Result permits Result.Ok, Result.Err {
record Ok(int value) implements Result {}
record Err(int code) implements Result {}
}
Напишите метод describe(Result r):
для Ok - строка "v=" и значение,
для Err - "e=" и код.
Выведите описание для new Result.Err(404).
Сделайте sealed interface State
с вариантами Idle
и record Work(int step), реализующим State.
Дана переменная:
State st = new State.Work(2);
Через switch выведите "idle",
"work" и номер шага
или "?" для неизвестного варианта.
Сделайте enum Size
с константами S, M и L.
Дан список:
import java.util.List;
List<Size> sizes = List.of(Size.S, Size.L, Size.M, Size.S);
Выведите число элементов Size.S.
Сделайте sealed interface Expr
с вариантами record Num(int v)
и record Mul(Expr a, Expr b).
Напишите метод eval(Expr e).
Выведите результат для new Mul(new Num(3), new Num(4)).
Сделайте enum Dir
с константами N, E, S
и W.
Сделайте sealed interface Move
с вариантами record Step(Dir dir, int len)
и Stop как enum с одной константой.
Дано движение new Move.Step(Dir.E, 5).
Выведите имя направления и len,
разделив пробелом.
Дан enum:
enum Role { USER, ADMIN }
boolean canDelete(Role role) {
return role == Role.ADMIN;
}
Выведите canDelete(Role.USER)
и canDelete(Role.ADMIN).
Сделайте sealed interface Pay
с вариантами record Card(String last4)
и Cash как enum с одной константой.
Дан список:
import java.util.List;
List<Pay> ways = List.of(
Pay.Cash.INSTANCE,
new Pay.Card("1234"),
new Pay.Card("9999")
);
Выведите число вариантов Card в списке.