Pra*_*ane 8 constructor inner-classes kotlin
我在Kotlin尝试内部课程并遇到了这个错误,但并不太明白.我试着看一下这里的文档,但是对外层类如何访问内部类构造函数没有任何指导
class OuterClass {
fun someFun(): InnerClassSuper {
return InnerClassX("Hello") //Error: Constructor of inner class InnerClassX can be called only with receiver of containing class
}
sealed class InnerClassSuper {
inner class InnerClassX(val x: String): InnerClassSuper()
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人解释错误并指示如何解决错误,将不胜感激.谢谢.
你的代码基本上意味着它InnerClassX是一个内部类InnerClassSuper,而不是OuterClass,因此错误意味着你需要InnerClasssSuper在构造时提供一个接收器对象InnerClassX.
在这一点上,科特林允许具有既不是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")
}
}
Run Code Online (Sandbox Code Playgroud)