Sobes.tech
Junior — Middle

Какви предимства и сценарии за използване знаеш за sealed class в Kotlin?

sobes.tech AI

Отговор от AI

Затворен клас в Kotlin се използва за ограничаване на йерархията на наследяване. Всички подкласове на затворения клас трябва да бъдат обявени в същия файл като самия затворен клас. Това позволява на компилатора да знае всички възможни варианти на наследници, което е удобно за използване в изрази 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("Зареждане...")
    }
}