В чем разница между sealed class и enum

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

Ответ

Sealed class и enum оба ограничивают набор возможных подтипов, но с ключевыми отличиями:

  1. Состояние: Enum константы - синглтоны, а sealed class позволяет создавать множественные экземпляры с разным состоянием.
  2. Гибкость: Sealed class поддерживает разные параметры и методы для каждого подкласса, enum ограничен фиксированными значениями.

Пример:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
}

enum class Status {
    SUCCESS, ERROR // Без состояния
}

Sealed class лучше для сложных иерархий с данными, enum - для простых фиксированных значений.