kotlin 幕后字段属性 field
关于field的初步认识,以及为什么会这样,使用的原因,请看下面的链接,说的非常的清楚
https://blog.csdn.net/strange_monkey/article/details/82707242
了解为什么之后,在此基础上就可以好好的使用了
field 关键词只能用于属性的访问器
/**
* 自定义访问器
*/
class Rectangle(val height: Int, val width: Int) {
init {
println("初始化代码")
printTest()
}
fun printTest(){
println("我是类的函数")
}
//get用法
val isSquare: Boolean
get() { // 声明自定义的 getter
return height == width
}
var str: String = ""
get() {
return "我的get"
}
// field 属于幕后字段,默认可以不写
var address:String = "china"
get() = field.toUpperCase() //get的时候得到大写
set(value) {
println("set前设值 *** $value")
field = value.toLowerCase() //set的时候小写
println("set *** $field")
}
}
var rectangle = Rectangle(50,50)
println(rectangle)
println(rectangle.isSquare)
println(rectangle.height)
println(rectangle.width)
// println(rectangle.str)
rectangle.str = "给str设置值"
// println(rectangle.str )
println(rectangle.address)
rectangle.address = "HUAWEI"
运行起来
初始化代码
我是类的函数
com.hk.kotlin.test.Rectangle@2c7b84de
true
50
50
CHINA
set前设值 *** HUAWEI
set *** huawei
理解了field,这样就可以随意处理set 和get 了
网友评论