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

Введение в enum и sealed в Java

Ограниченный набор вариантов часто встречается в программе: статус публикации, роль пользователя, ответ сервиса, шаг мастера. Если хранить такие значения строкой или числом, легко передать лишнее значение и пропустить его при разборе. Java предлагает два родственных способа описать набор заранее: перечисление enum и запечатанные sealed class или sealed interface.

Тип enum перечисляет фиксированные константы одного перечисления. У каждой константы одно имя в коде, все они известны компилятору, их удобно сравнивать и перебирать. Так описывают статусы поста, уровни доступа, режимы, где у варианта нет собственного набора полей или поля одинаковы у всех констант.

Запечатанный тип тоже ограничивает круг возможных реализаций, но каждый вариант может нести свои данные: черновик с заголовком, опубликованный пост с датой, архив без дополнительных полей. Разрешённые подтипы объявляют рядом с родителем или перечисляют в permits, поэтому компилятор знает полный список вариантов. Это удобно для ответов API, состояний экрана и деревьев выражений, где у разных веток разная форма данных.

Оба механизма сочетаются с switch: если перечислены все варианты, ветку default часто можно не писать. Enum удобен, когда нужны только метки; sealed - когда подтипы наследуют общий запечатанный тип и несут разные данные через класс, record или одиночный экземпляр. Дальше разберём enum от объявления до values и valueOf, затем sealed-типы и разбор вариантов в switch.

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