如何检查“lateInit”变量是否已在 Kotlin 中初始化?

任何在声明后初始化的变量都称为“后期初始化变量”。在传统的编程语言中,任何非 NULL 类型的变量都需要在构造函数中进行初始化。但有时,开发人员会错误地忘记执行这些 NULL 检查,从而导致编程错误。为了避免这种情况,Kotlin 引入了一个新的修饰符,称为“lateInit”。除了这个修饰符,Kotlin 还提供了几个方法来检查这个变量是否被初始化。

为了创建一个“lateInit”变量,我们只需要添加关键字“lateInit”作为该变量的访问修饰符。以下是在 Kotlin 中使用“lateInit”需要遵循的几个条件 -

  • 将“lateInit”与可变变量一起使用。这意味着,我们需要将“var”关键字与“lateInit”一起使用。

  • "lateInit" 只允许用于非 NULLable 数据类型。

  • “lateInit”不适用于原始数据类型。

  • 当变量属性没有任何gettersetter方法时,可以使用“lateInit”。

示例

在这个例子中,我们将一个变量声明为“lateInit”变量,并且我们将使用我们的 Kotlin 库函数来检查该变量是否被初始化。

class Tutorial {

   lateinit var name : String

   fun checkLateInit(){
      println(this::name.isInitialized)
      //它将打印 false 因为该值未初始化

      //初始化名称
      name = "www.nhooo.com/"
      println(this::name.isInitialized)
      //它将返回 true
   }
}

fun main() {
   var obj=Tutorial();
   obj.checkLateInit();
}
输出结果

执行代码后,它将生成以下输出 -

false
true

在第二种情况下,变量被初始化,因此它返回 True。