Назад к вопросам
Middle
226
Какие ограничения имеют sealed классы в Kotlin?
Ответ от нейросети
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, так как все подклассы покрыты
}
}