Назад к вопросам
amoCRM
Junior — Middle
59
В каких случаях и в каком месте можно объявить подклассы, если класс помечен как sealed?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Kotlin класс, помеченный как sealed, ограничивает иерархию наследования: все подклассы такого класса должны быть объявлены в том же файле, что и сам sealed класс. Это позволяет компилятору знать полный набор наследников и использовать это, например, в выражениях when без необходимости писать ветку else.
То есть подклассы sealed класса можно объявлять:
- В том же файле, где объявлен sealed класс.
- Внутри самого sealed класса (вложенные классы).
Пример:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Или
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Но все эти подклассы должны находиться в одном файле с sealed классом. Это ограничение помогает обеспечивать безопасность типов и полноту проверок.