**
* 属性代理
*/
class Agentby {
/**
* 第一次访问name的时候才会初始化name
* by实现了get方法
*/
val name by lazy { "默认名称" }
val agentName by Agent()
/**
* 需要get和set方法
*/
var agentName1 by Agent()
}
class Agent {
private var vals: String? = null
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
/**
* 如果vals为null则返回空字符串
*/
return vals ?: "none"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
this.vals = value
}
}
fun main(args: Array<String>) {
var agentby = Agentby()
println(agentby.name)
println(agentby.agentName)
println(agentby.agentName1)
agentby.agentName1 = "gogogo"
println(agentby.agentName1)
}
kotlin入门-属性代理
最新推荐文章于 2024-04-05 10:36:21 发布