Для чего нужен enum class в Kotlin

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

Ответ

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

  • Типобезопасность – компилятор проверяет допустимые значения.
  • Может содержать свойства и методы:
enum class Direction(val degrees: Int) {  
    NORTH(0), EAST(90), SOUTH(180), WEST(270);  
    fun opposite() = when (this) {  
        NORTH -> SOUTH  
        EAST -> WEST  
        SOUTH -> NORTH  
        WEST -> EAST  
    }  
}  
  • Реализует интерфейсы, но не наследуется.
  • Автоматически получает методы values(), valueOf().

Используется для замены магических чисел/строк, например, статусы, направления, ошибки.