Разбор enum в switch в Java
Конструкция switch по значению enum
перебирает известные компилятору константы. Если перечислены
все члены перечисления, выражение считается исчерпывающим и
default можно опустить:
enum PostStatus { DRAFT, PUBLISHED, ARCHIVED }
Разберем константу перечисления в switch и выведем подпись:
static String label(PostStatus status) {
return switch (status) {
case DRAFT -> "draft";
case PUBLISHED -> "live";
case ARCHIVED -> "archive";
};
}
System.out.println(label(PostStatus.PUBLISHED));
Выражение switch может возвращать значение в переменную.
Для enum с полным набором веток тип результата выводится
без default:
PostStatus status = PostStatus.DRAFT;
int code = switch (status) {
case DRAFT -> 0;
case PUBLISHED -> 1;
case ARCHIVED -> 2;
};
System.out.println(code);
Несколько констант можно объединить в одну ветку через запятую, если для них нужен один и тот же результат:
public class Main {
static boolean isPublic(PostStatus status) {
return switch (status) {
case PUBLISHED -> true;
case DRAFT, ARCHIVED -> false;
};
}
public static void main(String[] args) {
System.out.println(isPublic(PostStatus.ARCHIVED));
}
}
Объявите enum Role с константами
GUEST, USER и ADMIN.
Напишите метод canEdit(Role role):
для ADMIN и USER верните true,
для GUEST - false.
Вызовите с Role.GUEST и выведите результат.
Объявите enum Role с константами
GUEST, USER и ADMIN.
Дано:
Role role = Role.USER;
С помощью switch для переменной role
запишите в level число: GUEST -
0, USER - 1,
ADMIN - 2.
Выведите level.