我在Kotlin中尝试内部类时遇到了这个错误,但我并不完全理解它。我试图查看文档here,但没有得到任何关于外部类如何访问内部类构造函数的指导
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()
}
}
如果有人解释错误并指导如何修复它,将不胜感激。谢谢。
2条答案
按热度按时间zf2sa74q1#
我们也可以这样用
外部类名().嵌套类名()
y4ekin9u2#
您的代码基本上意味着
InnerClassX
是InnerClassSuper
的内部类,而不是OuterClass
,因此该错误意味着您需要在构造InnerClassX
时提供InnerClasssSuper
的接收器对象。此时,Kotlin允许
inner sealed
类和sealed
类的派生类都不作为另一个类的inner
类。但是,您可以从
sealed
类派生abstract
类,并在OuterClass
中继承abstract
类: