以下代码生成的字节码在 private final Base $$delegate_0
类中创建了一个 Derived
字段。当可变字段 b
被分配时,原始委托(delegate)不会改变。
有没有办法在运行时更改委托(delegate),同时保持 zero boilerplate
实现?
接口(interface)基{
有趣的打印()
}
类 BaseImpl(val x: Int) : Base {
覆盖乐趣打印(){ println(x)}
}
class Derived(var b: Base) : Base by b
有趣的主(参数:数组){
val b = BaseImpl(10)
val 派生 = 派生 (b)
派生.print()//打印10
派生.b = BaseImpl(20)
派生.print()//打印10
}
该示例取自 https://kotlinlang.org/docs/reference/delegation.html 文档并进行了编辑。
最佳答案
不,从Kotlin 1.1版开始不支持此功能,但考虑在将来的版本中使用。这是由 this feature request 跟踪的。
关于kotlin - 在 Kotlin 中,是否可以在运行时更改委派?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42341541/