在 Kotlin 中,委托属性是通过 by 关键字来实现的,但是这个语法只能用于类的属性而不是局部变量。委托属性通常用于类的属性声明中,例如:

import kotlin.reflect.KProperty

class Delegate {
    private var storedValue: String? = null

    operator fun getValue(thisRef: Any?, property: KProperty<*>): String? {
        // 读取属性时的逻辑
        return storedValue
    }

    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String?) {
        // 写入属性时的逻辑
        storedValue = value
    }
}

class Example {
    var property: String? by Delegate()
}

fun main() {
    val example = Example()
    example.property = "Hello, Kotlin!"
    println(example.property)
}

,但是 委托定义是写在方法中,不是class 类中,setValue的thisRef永远是null。。

2.用官方自己的委托也一样。

12-02 09:31