在 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.用官方自己的委托也一样。