Назад к вопросам
Junior — Middle
80
В каких случаях предпочтительно использовать sealed class вместо enum в Kotlin?
Ответ от нейросети
sobes.tech AI
Sealed class в Kotlin предпочтительнее enum, когда нужно описать ограниченное множество типов с разной структурой данных и поведением, а не просто набор констант.
Отличия и когда использовать sealed class:
- Разные данные у вариантов: В enum все элементы — однотипные константы, а sealed class позволяет каждому подклассу иметь свои свойства и методы.
- Наследование и расширяемость: Sealed class — это базовый класс с ограниченным числом наследников, что удобно для выражения иерархий.
- Использование в when: Компилятор проверяет полноту when по sealed class, что повышает безопасность.
Пример sealed class:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
object Loading : Result()
}
fun handleResult(result: Result) {
when(result) {
is Result.Success -> println("Данные: ${result.data}")
is Result.Error -> println("Ошибка: ${result.error.message}")
Result.Loading -> println("Загрузка...")
}
}
Если нужно просто перечисление фиксированных констант без данных — enum будет проще и эффективнее.