Какие знаешь особенности sealed class

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

Ответ

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

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

  • Компилятор знает все возможные наследники, что полезно для when без else.
  • Нельзя создать экземпляр sealed класса напрямую.
  • Подклассы могут быть data class, object или обычными классами.

Пример:

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

fun handleResult(result: Result) = when(result) {
    is Result.Success -> println(result.data)
    is Result.Error -> println(result.message)
    Result.Loading -> println("Loading...")
}