Sobes.tech
Назад к вопросам
Junior — Middle
65

Какие преимущества и сценарии использования sealed class ты знаешь в Kotlin?

Ответ от нейросети

sobes.tech AI

Sealed class в Kotlin используется для ограничения иерархии наследования. Все подклассы sealed класса должны быть объявлены в том же файле, что и сам sealed класс. Это позволяет компилятору знать все возможные варианты наследников, что удобно для использования в выражениях when без необходимости писать ветку else.

Преимущества:

  • Безопасность типов: компилятор проверяет полноту обработки всех вариантов.
  • Удобство для моделирования ограниченных наборов состояний или событий.

Сценарии использования:

  • Реализация состояний в паттерне "состояние".
  • Обработка событий или команд.
  • Представление ограниченного множества вариантов, например, ответов API.

Пример:

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("Загрузка...")
    }
}