Kotlin 创建getter/setter,但不包含字段成员

Kotlin 创建getter/setter,但不包含字段成员,kotlin,Kotlin,在Kotlin中,您可以创建同时具有getter和setter的变量: var mRetrievingConnections: Boolean? var retrievingConnections: Boolean? get() = mRetrievingConnections set(value) { mRetrievingConnections = value } 但我想知道是否有一种方法可以做到这一点,而不需要一个私人成员字段。Kotlin说它有内置

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

var mRetrievingConnections: Boolean?

var retrievingConnections: Boolean?
    get() = mRetrievingConnections
    set(value) {
      mRetrievingConnections = value
    }
但我想知道是否有一种方法可以做到这一点,而不需要一个私人成员字段。Kotlin说它有内置的setter支持字段,但是getter如何访问这个支持字段呢。我正在寻找这样的东西(这是不允许的):


我觉得这很奇怪,因为setter可以访问backing字段,所以无论何时设置值,它都会自动存储。但是如何在getter中检索该值呢?

根据我的评论,这是正确的代码:

var retrievingConnections: Boolean? = null
    get() = field
    set(value) {
        field = value
    }
请注意,此代码相当于

var retrievingConnections: Boolean? = null

因此,如果您不在
get
和/或
set

中执行更多操作,那么它不会增加任何值。您的代码是正确的,除了
set
实际上没有设置值,您需要初始化
var
。例如,
var retrievingConnections:Boolean?=空
您可以访问setter中的
字段
设置(值){field=value}
也可以。您想做什么?Var属性默认为get/set。@Januson实际上,在阅读文档时,Kotlin并没有说Var变量默认为get/set。但GPTO是正确的。如果我不使用它们,那就把它们去掉。我只是把它理解为字段变量和具有getter/setter的变量之间有区别。@AndroidDev是的,它有:“默认getter和setter隐含”,“具有Int类型,默认getter和setter”。
var retrievingConnections: Boolean? = null