【发布时间】:2017-08-30 09:58:42
【问题描述】:
作为一名 Java 开发人员,支持字段的概念对我来说有点陌生。给定:
class Sample {
var counter = 0 // the initializer value is written directly to the backing field
set(value) {
if (value >= 0) field = value
}
}
这个支持字段有什么用? Kotlin docs 说:
Kotlin 中的类不能有字段。但是,有时在使用自定义访问器时需要有一个支持字段。
为什么?在 setter 中使用属性名称本身有什么区别,例如。*
class Sample {
var counter = 0
set(value) {
if (value >= 0) this.counter = value // or just counter = value?
}
}
【问题讨论】:
-
在setter中使用属性本身会导致无限递归,因为给属性赋值总是会调用setter。
-
@Strelok 我的错......我在阅读 Kotlin 的文档时假设
this.counter = value与 Java 等效项相同。 -
此article 用于字段与属性。
标签: android kotlin kotlin-android-extensions