Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvOpEsEM 94 of 147 menu
◀ ▶

Методы enum в Java

В теле enum можно объявлять методы, общие для всех констант. Они вызываются у конкретной константы через точку:

enum PostStatus { DRAFT, PUBLISHED, ARCHIVED; public boolean isEditable() { return this == DRAFT; } }

Вызовем метод константы DRAFT и выведем, можно ли ее менять:

System.out.println(PostStatus.DRAFT.isEditable());

Если поведение у констант разное, у отдельной константы можно задать собственное тело в фигурных скобках и переопределить абстрактный метод enum - по той же схеме, что абстрактный метод у наследника абстрактного класса:

enum PostAction { SAVE { @Override public String verb() { return "save"; } }, PUBLISH { @Override public String verb() { return "publish"; } }, ARCHIVE { @Override public String verb() { return "archive"; } }; public abstract String verb(); }

Вызовем метод verb у константы PUBLISH и выведем строку:

System.out.println(PostAction.PUBLISH.verb());

Общий метод может опираться на поля, заданные через конструктор перечисления:

System.out.println(PostStatus.PUBLISHED.isLive());

Объявите enum Role с константами GUEST, USER, ADMIN. Добавьте метод label(): для GUEST верните "guest", для USER - "user", для ADMIN - "admin". Выведите результат для Role.USER.

Объявите enum Role с константами GUEST и ADMIN и абстрактным методом accessLevel(). Для GUEST верните 0, для ADMIN - 10. Выведите Role.ADMIN.accessLevel().

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить