我有一个带有getter,默认setter的属性,没有这样的初始化器:
var test: String
get() = "test value"
private set
如果我在Android工作室中尝试此代码,则会收到编译错误,指出Property must be initialized
。如果我在try.kotlinlang.org处尝试,则代码运行正常,每当我访问该属性时都会返回test value
。
我试图阅读Kotlin documentation for properties,但我无法确定这是否应该有效。
这是否是有效的Kotlin代码?
答案 0 :(得分:4)
try.kotlinlang.org也接受未初始化的val
返回null
,但它不可为空:
var test: String
private set
如果你完全没有var
字段支持,那么你的意图是可能的:
var test: String
get() = "test value"
private set(value) = Unit
对于Backing Fields文档说明:
如果属性使用至少一个访问者的默认实现,或者自定义访问者通过
field
标识符引用它,则将为该属性生成支持字段。