从 init 块中的方法初始化 Kotlin 中的 val



让我们有如下类:

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 abstractVal cannot be reassigned.

有没有办法使用 init 块中的方法来初始化类的 val 成员?

不,但你可以有多个 init 块,每个块对应于你将使用的方法。

或者,您可以使属性lateinit var,但是

  1. 这是var,不是val;
  2. 很容易不意外初始化它。

最新更新