创建getter / setter,但没有现场成员

时间:2019-06-07 09:11:13

标签: kotlin

在Kotlin中,您可以创建一个同时具有getter和setter的变量:

var mRetrievingConnections: Boolean?

var retrievingConnections: Boolean?
    get() = mRetrievingConnections
    set(value) {
      mRetrievingConnections = value
    }

但是我想知道是否有一种方法可以不必要求使用私有成员字段。 Kotlin指出,它具有用于setter的内置后备字段,但是getter如何访问此后备字段。我正在寻找这样的东西(不允许):

var retrievingConnections: Boolean?
    get() = field
    set(value) {
    }

我觉得很奇怪,因为设置器可以访问后备字段,因此无论何时设置该值,它都会自动存储。但是如何在吸气剂中检索该值?

1 个答案:

答案 0 :(得分:1)

从我的评论中详细说明,这是正确的代码:

var retrievingConnections: Boolean? = null
    get() = field
    set(value) {
        field = value
    }

请注意,此代码等同于

var retrievingConnections: Boolean? = null

因此,如果您在get和/或set内不做其他事情,它不会增加任何价值