5
爲以下代碼生成的字節代碼在Derived
類中創建一個private final Base $$delegate_0
字段。當分配可變字段b
時,原始委託不會更改。在Kotlin中,是否有可能在運行時更改代表團?
有沒有辦法在運行時更改委託,同時保持zero boilerplate
實施?
interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { println(x) } } class Derived(var b: Base) : Base by b fun main(args: Array) { val b = BaseImpl(10) val derived = Derived(b) derived.print()// prints 10 derived.b = BaseImpl(20) derived.print()// prints 10 }
該示例取自文檔https://kotlinlang.org/docs/reference/delegation.html並進行了編輯。