kotlin - 从 init block 中的方法初始化 Kotlin 中的 val

标签 kotlin

让我们上课如下:

class TestClass()  {
    val isInitialised : Boolean

    init {
        isInitialised = true
    }
}
瓦尔 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 成员?

最佳答案

不,但您可以有多个 init 块,每个块对应于您将使用的方法。
或者,您可以设置属性 lateinit var , 但是之后

  • 这是一个 var ,不是 val ;
  • 很容易不会意外地初始化它。
  • 关于kotlin - 从 init block 中的方法初始化 Kotlin 中的 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65528046/

    相关文章:

    range - 在 kotlin 中创建专有范围

    android - 为什么来自 Kotlin May 更新的新 LiveData 构建器在我的项目中不起作用

    android - 我如何从 Activity 中访问共享 View 模型?

    Kotlin 换行符 - 结果取决于运算符位置

    android - 当加载包含6000个项目的列表时,ConstraintLayout与RecyclerVIew(ListAdapter)一起使用了巨大的内存量(最大1GB)

    kotlin - 同时转换映射和过滤空结果的惯用方法

    android - 为什么我的数据类给出空值,除非我对其应用默认值?

    generics - 可空运算符在泛型类中有效吗?

    java - 用 jackson 反序列化对象

    java - 具有Java向后兼容性的Kotlin optional 参数