Kotlin中的委托属性有哪些

在Kotlin中,委托属性有以下几种:

lazy属性:延迟初始化属性,只有在首次访问时才会进行初始化。

val lazyValue: String by lazy {
    println("computed")
    "Hello"
}

observable属性:属性变化监听器,当属性被赋新值时,会调用监听器。

var name: String by Delegates.observable("initial value") { prop, old, new ->
    println("$old -> $new")
}

vetoable属性:属性变化拦截器,当属性被赋新值时,可以根据条件决定是否接受新值。

var age: Int by Delegates.vetoable(0) { prop, old, new ->
    new >= 0
}

map属性:通过Map委托实现属性存储。

val userMap = mutableMapOf("name" to "Alice", "age" to 30)
val name: String by userMap
val age: Int by userMap

除了以上几种常见的委托属性,Kotlin还支持自定义委托属性,开发者可以根据自己的需求实现自定义的委托属性。

阅读剩余
THE END