Ответ
Да, sealed class можно сделать внутренним (inner) в Kotlin, но с ограничениями. Внутренний sealed class должен быть объявлен внутри другого класса и все его подклассы должны находиться в том же файле. Это связано с тем, что sealed class требует, чтобы все его наследники были известны на этапе компиляции.
Пример:
class Outer {
inner sealed class Result {
class Success(val data: String) : Result()
class Error(val message: String) : Result()
}
}
Ограничения:
- Все подклассы должны быть объявлены в том же файле
- Нельзя объявлять подклассы вне файла, где объявлен sealed class
- Внутренний sealed class имеет доступ к членам внешнего класса через
this@Outer