Ваш код в основном означает, что InnerClassX
является внутренним классом InnerClassSuper
, а не OuterClass
, поэтому ошибка означает, что вам нужно предоставить объект-получатель InnerClasssSuper
при построении InnerClassX
.
На данный момент Kotlin позволяет не иметь ни класса inner sealed
, ни производного класса для класса sealed
как класса inner
другого класса.
Однако вы можете сделать abstract
класс, производный от sealed
и наследуемый от него внутри OuterClass
:
sealed class SealedClassSuper {
abstract class SealedClassChild(val x: String): SealedClassSuper()
}
class OuterClass {
inner class InnerClassX(x: String) : SealedClassSuper.SealedClassChild(x)
fun someFun(): SealedClassSuper {
return InnerClassX("Hello")
}
}