Ответ
Sealed class и enum оба ограничивают набор возможных подтипов, но с ключевыми отличиями:
- Состояние: Enum константы - синглтоны, а sealed class позволяет создавать множественные экземпляры с разным состоянием.
- Гибкость: 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 - для простых фиксированных значений.