让我们有如下类:
class TestClass() {
val isInitialised : Boolean
init {
isInitialised = true
}
}
ValisInitialised
在 init 块中进行初始化,编译器很高兴。一旦我有更多的 val 成员,我想将它们的初始化分组为一种方法并从 init 块调用该方法,例如:
class TestClass() {
val isInitialised : Boolean
init {
setInitValue()
}
private fun setInitValue() {
isInitialised = true
}
}
在第二种情况下,我在构建时收到错误:Property must be initialized or be abstract
和Val cannot be reassigned
.
有没有办法使用 init 块中的方法来初始化类的 val 成员?
不,但你可以有多个 init 块,每个块对应于你将使用的方法。
或者,您可以使属性lateinit var
,但是
- 这是
var
,不是val
; - 很容易不意外初始化它。