【问题标题】:Initialise val in Kotlin from a method in init block从 init 块中的方法初始化 Kotlin 中的 val
【发布时间】:2021-01-01 07:44:00
【问题描述】:

让我们上课如下:

class TestClass()  {
    val isInitialised : Boolean

    init {
        isInitialised = true
    }
}

Val isInitialised 在 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 成员?

【问题讨论】:

    标签: kotlin


    【解决方案1】:

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

    或者,您可以将属性设为lateinit var,然后

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2012-02-23
      • 2016-09-12
      • 2021-03-13
      • 2019-09-29
      相关资源
      最近更新 更多