Kotlin一些常用小知识积累
1、在使用自定义get函数时,不要直接在不可变变量下实现(2021-11-05)
class Test() {
var str:String? = null
val text:String
get() {
println("getText")
return "text:$str"
}
}
fun main(args: Array<String>) {
val t = Test()
println("${t.text}")
t.str = "str change 1"
println("${t.text}")
t.str = "str change 2"
println("${t.text}")
}
输出:
getText
text:null
getText
text:str change 1
getText
text:str change 2
以上代码块,每次调用Test类中的text属性时都会执行get函数,且随着str改变时,val定义的text值也会变化,不符合不可变的原则。在自定义get方法时,应该使用下面的代码
class Test() {
var str:String? = null
val _text:String
get() {
println("getText")
return "text:$str"
}
val text = _text
}
fun main(args: Array<String>) {
val t = Test()
p