sealed класс используется для представления ограниченной иерархии классов. Все прямые наследники sealed класса должны быть определены в том же файле, что и сам sealed класс, или в тех же модулях (для Kotlin 1.5+). Это позволяет компилятору проверить, что все возможные подтипы обработаны в when выражении, делая его исчерпывающим без необходимости ветки else.
Ключевые особенности:
sealed класса является private по умолчанию.sealed класс не может быть абстрактным.Случаи использования:
Loading, Success(data), Error(message).
kotlin
when с гарантией исчерпывающей проверки.
kotlin
Сравнение с перечислениями (enum classes):
| Характеристика | enum class | sealed class |
|---|---|---|
| Экземпляры | Ограниченный набор именованных констант | Ограниченный набор типов |
| Данные в вариантах | Нет (только свойства) | Да (через подклассы) |
| Абстрактные члены | Нет | Да |
| Наследование | Нет | Да, но ограничено в том же файле/модуле |