Sobes.tech
Back to questions
Middle
225

Какие ограничения имеют sealed классы в Kotlin?

Answer from AI

sobes.tech AI

Sealed классы в Kotlin имеют следующие ограничения:

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

Пример использования sealed класса с when выражением, где компилятор проверяет полноту:

sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

fun handleResult(result: Result) {
    when(result) {
        is Success -> println("Data: ${result.data}")
        is Error -> println("Error: ${result.error.message}")
        // Нет else, так как все подклассы покрыты
    }
}