Проверяет понимание конструкции sealed для ограничения иерархии типов.
sealed-класс в Kotlin — это класс, у которого все подклассы объявлены в том же файле, что позволяет компилятору знать полный набор реализаций. Это удобно для описания конечных состояний или событий, когда нужно обработать каждый вариант через when без else.
sealed-классы ограничивают расширяемость и дают преимущества при проверке:
1. Полный набор подклассов
Все реализации объявляются в одном файле
Компилятор проверяет exhaustiveness в when
2. Использование в моделировании состояний
sealed class Result {
data class Success(val data: String): Result()
data class Error(val exception: Throwable): Result()
object Loading: Result()
}3. Безопасность when
fun handle(r: Result) = when(r) {
is Result.Success -> show(r.data)
is Result.Error -> showError(r.exception)
Result.Loading -> showLoading()
}4. Применение:
State Machine
Упрощённая сериализация/десериализация
Когда использовать:
Описывать конечный набор возможных случаев
Гарантировать, что все варианты обработаны