Kotlin 中默认访问器的实现是什么



我有这样的类

class Square(var width: Int, var height: Int) {
var color : String = "red"
}

据我了解,Kotlin 的编译器将考虑宽度、高度和颜色是类 Square 的属性,因此它将自动生成这些属性的 setter 和 getter。

有了属性颜色,我想它的吸气者和二传手应该喜欢这个

var color : String = "red"
get() = field
set(value) { field = value}

但是宽度和高度属性的默认设置器和获取器怎么样。这些属性没有初始化值,因此它们在 getter 和 setter 中不能有"字段"标识符。有谁知道答案?

如果需要在类中存储简单属性,并且希望通过具有相同名称的构造函数参数初始化它们,则放置在类声明标头中的属性非常方便。如果您使用这些,您将放弃为它们提供自定义 setter 和 getter 的能力 - 这只能对类主体中的属性完成。

否则,它们的 getter(以及var的 setter(的默认实现与类体中的属性相同。它们只是返回(并设置(支持字段的值。

编辑,跟进上面的评论:这也意味着构造函数中的属性必须始终初始化,它们不能是计算属性,因为你不能给它们不使用其支持字段的 getter 和 setter。

最新更新