Kotlin-可观察属性

类似于观察者模式,当所监测的对象发生改变时,能够收到回调通知。

例如:我们监测一个变量:

1
2
3
4
5
6
7
8
9
var str: String by Delegates.observable("qianqian",{
property: KProperty<*>, oldValue: String, newValue: String ->
Log.i("xx","改变的属性名称:${property.name} --- ${oldValue} -- ${newValue}" )
})

//点击一个按钮,改变str的值
fun foo(view : View){
str = "haha"
}

这时候我们会发现,当改变str 的值的时候,会打印信息,也就是收到回调:

1
改变的属性名称:str --- qianqian -- haha

再比如:检测对象里的其中一个属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import kotlin.properties.Delegates

class User {
var name: String by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}
}

fun main(args: Array<String>) {
val user = User()
user.name = "first"
user.name = "second"
}

打印信息:

1
2
<no name> -> first
first -> second

-------------本文结束感谢您的阅读-------------