美文网首页
kotlin中setter和getter

kotlin中setter和getter

作者: Bfmall | 来源:发表于2022-04-20 15:09 被阅读0次

Java中getter和setter方法

在Java中,无论是数据模型类(JavaBean),还是自己定义的某个对象中的属性,都需要自己手动定义getter和setter方法,下面以Bird对象为例,定义的getter和setter方法如下:

public class Bird{
    private String color="Yellow";
    private int age=0;
    private String sex="female";
    
    public String getColor(){
       return this.color;
    }
    public void setColor(String color){
        this.color=color;
    }
    public int getAge(){
        return this.age;
    }
    public void setAge(int Age){
        this.age=age;
    }
    public String getSex(){
        return this.sex;
    }
    public void setSex(String sex){
        this.sex=sex;
    }
}

Kotlin中的getter和setter方法
在Kotlin中,定义对象属性中的getter和setter方法默认是隐藏的,此外,所谓的getter和setter方法是以get(){xxx}和set(value){xxx}方法存在于Kotlin中,与Java中的案例一样,表现与上面Java中相一致的逻辑代码如下:

class Bird(var color:String,var age:Int,var sex:String)

或者

class Bird{
    var color:String=""
    var age:Int=-1
    var sex:String=""
}

在Kotlin中以最简洁的代码实现了与Java相同功能,在Kotlin是默认隐藏get(){xxx}和set(value){xxx}方法,这个两个默认方法表现形式如下:

class Bird {
    var color: String = ""
        get() {
            return field
        }
        set(value) {
            field = value
        }
    var age: Int = -1
        get() {
            return field
        }
        set(value) {
            field = value
        }
    var sex: String = ""
        get() {
            return field
        }
        set(value) {
            field = value

首先,get(){xxx}和set(value){xxx}必须写在对应的属性下方,这样field字段获取的值才能与属性值相对应,

Kotlin中的get()和set()高级用法
前面案例中,我们可以看到Bird对象在kotlin中可以以一句代码就解决了需要在Java代码中要用很多代码解决的getter和setter的问题,下面我们可以扩展下针对Kotlin中的get()和set()高级用法,针对上面的Bird对象我们可以稍微改下:

class Bird {
    var color: String = ""

    var age: Int=-1
        get() {
          return  if (field > 0) field else 0
        }
    var sex: String = ""
        get() {
            return if (color == "Yellow") "male" else "female"
        }
}

fun main() {
    val bird = Bird()
    bird.color = "Yellow"
    bird.age = -4
    println("这只鸟的颜色是->${bird.color},年龄->${bird.age},性别->${bird.sex}")
    //这只鸟的颜色是->Yellow,年龄->0,性别->male
}

相关文章

网友评论

      本文标题:kotlin中setter和getter

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