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("Зареждане...")
}
}