【发布时间】:2019-06-07 09:11:13
【问题描述】:
在 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) {
}
我觉得这很奇怪,因为 setter 可以访问支持字段,所以无论何时设置值,它都会自动存储。但是如何在 getter 中检索该值?
【问题讨论】:
-
你的代码是正确的,除了
set实际上没有设置值,你需要初始化var。例如。var retrievingConnections: Boolean? = null -
您可以在 setter 中访问
field,set(value){ field = value }也可以使用。 -
你想做什么? Var 属性默认有 get/set。
-
@Januson 实际上,在阅读文档时,Kotlin 并没有说 var 变量默认具有 get/set。但是 gpunto 是正确的。如果我不使用它们,那么就把它们排除在外。我只是将其理解为字段变量与具有 getter/setter 的变量之间存在差异。
-
@AndroidDev 是的:“默认 getter 和 setter 隐含”,“具有 Int 类型,默认 getter 和 setter”。
标签: kotlin