Ответ
sealed в Kotlin используется для ограничения иерархии классов — все подклассы должны быть объявлены в том же файле, что и родительский sealed класс. Это полезно для моделирования ограниченного набора типов, например, состояний или результатов операций.
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Success: ${result.data}")
is Result.Error -> println("Error: ${result.message}")
}
}
Преимущества:
- Исключает необходимость
elseвwhen, так как компилятор знает все возможные варианты. - Гарантирует, что все случаи обработаны.
- Упрощает рефакторинг — добавление нового подкласса требует явной обработки.