美文网首页
kotlin 幕后字段初步认识field

kotlin 幕后字段初步认识field

作者: kot_flu | 来源:发表于2019-05-20 11:30 被阅读0次

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 了

相关文章

网友评论

      本文标题:kotlin 幕后字段初步认识field

      本文链接:https://www.haomeiwen.com/subject/ghnhzqtx.html