Ahm*_*wan 6 delegates delegation kotlin kotlin-delegate
我想在特定的上下文中使用Kotlin 委托。
printMessage(),我仍然需要以与多态继承中调用的方式相同的方式调用委托super.printMessage()。我可以通过简单地在子句中实例化匿名委托来完成第一个任务by(class Derived() : Base by BaseImpl(42)使用Kotlin 的文档示例)。但是,这阻止了我访问匿名委托,因为我不知道如何引用它。
我想做类似以下的事情。然而,以下内容编译时不会出现错误'this' is not defined in this context。
class Derived() : Base by this.b {
val b: Base = BaseImpl(42)
override fun printMessage() {
b.printMessage()
print("abc")
}
}
Run Code Online (Sandbox Code Playgroud)
我确实需要为班级的每个实例分配一个单独的委托Derived。因此,作为全局变量移动b对我来说不是一个选择。
我最接近我需要的是构造函数的可选参数。这也不是一个好的选择,因为我不想允许Derived用任意的代表构建我的类。
您可以使用私有主构造函数和公共辅助构造函数来执行此操作:
class Derived private constructor(val b: Base) : Base by b {
constructor(): this(BaseImpl(42))
override fun printMessage() {
b.printMessage()
print("abc")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |