Можно ли использовать enum для ограниченного набора состояний

«Можно ли использовать enum для ограниченного набора состояний» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, enum отлично подходит для ограниченного набора состояний. Он обеспечивает типобезопасность, читаемость кода и предотвращает использование недопустимых значений.

enum class DownloadState {
    IDLE, DOWNLOADING, PAUSED, COMPLETED, FAILED
}

// Использование
var currentState = DownloadState.IDLE
when (currentState) {
    DownloadState.DOWNLOADING -> showProgress()
    DownloadState.FAILED -> showError()
    else -> { /* обработка остальных состояний */ }
}

Плюсы:

  • Компилятор проверяет допустимость значений.
  • Удобно использовать в when.
  • Можно добавлять свойства и методы.

Минусы:

  • Немного накладные по памяти (если критично, используйте @IntDef/@StringDef).
  • Нельзя наследоваться.