**
* 属性代理
*/
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-11 09:06:37 发布
本文介绍 Kotlin 中使用属性代理来延迟加载和自定义 getter 和 setter 的方法。通过具体的代码示例展示了如何实现 by lazy 延迟初始化及自定义访问器。
1159

被折叠的 条评论
为什么被折叠?



