Можно ли сделать множественную вложенность в sealed class

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

Ответ

Да, можно. Sealed class в Kotlin поддерживает множественную вложенность - то есть sealed class может содержать другие sealed classы или sealed interfaceы внутри себя. Главное, чтобы все наследники были объявлены в том же файле или вложенном классе.

Пример:

sealed class Response {
    data class Success(val data: Data) : Response()
    sealed class Error : Response() {
        object NetworkError : Error()
        data class ServerError(val code: Int) : Error()
    }
}

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

  1. Вложенные sealed классы должны быть объявлены внутри родительского
  2. Все наследники должны быть в том же файле или вложенном классе
  3. Можно использовать для создания сложных иерархий состояний