我创建了一个在Kotlin中有一个示例字段的类
class SomeClass {
var smth: String = "Initial value"
get() = "Here it is"
set(value) {
field = "it is $value"
}
}
当我创建类的对象并调用 smth
字段时,无论如何它将调用 get()
属性 .
val myValue = SomeClass().smth// myValue = "Here it is"
所以,问题是:为什么我们必须初始化一个有吸气剂的场?
var smth: String // Why this gives error?
get() = "Here it is"
set(value) {
field = "it is $value"
}
它总会从 get()
属性返回值,不是吗?
2 回答
我只是认为这是因为编译器不够聪明,无法推断出它不是null .
实际上这是一个非常相似的代码来自官方文档https://kotlinlang.org/docs/reference/properties.html
显然这个代码不会编译,除非像构造函数那样
被添加 .
你在setter中有支持字段
field
,所以我们应该初始化,请参阅reference