Что такое ключевое слово sealed

«Что такое ключевое слово sealed» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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, так как компилятор знает все возможные варианты.
  • Гарантирует, что все случаи обработаны.
  • Упрощает рефакторинг — добавление нового подкласса требует явной обработки.