以下代码生成的字节码在 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/

10-10 10:41