Что такое sealed class

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

Ответ

Sealed class (запечатанный класс) — это специальный класс в Kotlin, который ограничивает иерархию наследования. Все подклассы должны быть объявлены в том же файле или внутри самого sealed class. Это делает его удобным для представления ограниченного набора возможных состояний.

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result()
}

Особенности:

  • Все наследники известны на этапе компиляции.
  • Автоматически final — нельзя наследовать вне sealed class.
  • Идеально подходит для when с гарантией покрытия всех случаев (без else).
fun handleResult(result: Result) = when(result) {
    is Result.Success -> println(result.data)
    is Result.Error -> println(result.message)
    Result.Loading -> println("Loading...")
}