📜  kotlin lateinit - Kotlin (1)

📅  最后修改于: 2023-12-03 15:17:09.448000             🧑  作者: Mango

Kotlin lateinit

Kotlin lateinit 是一个延迟初始化变量的属性修饰符,它告诉编译器该属性在初始化之前不应该被访问,但是可以被直接赋值且操作前只需初始化一次。

语法

声明一个 lateinit 变量的语法如下:

lateinit var variableName: DataType

其中,variableName 是变量名,DataType 是变量的数据类型。

示例

下面是一个 lateinit 属性的示例:

class Person {
    lateinit var name: String

    fun getPersonName() {
        name = "Tom"
        println("My name is $name.")
    }
}

fun main() {
    val person = Person()
    person.getPersonName()
}

在上面的示例中,声明了一个 name 属性,并使用 lateinit 修饰符将其延迟初始化。在 getPersonName() 方法中,对 name 进行了赋值和访问操作。在 main() 函数中,创建了 Person 对象并执行了 getPersonName() 方法,输出了 My name is Tom.

注意,在使用 lateinit 修饰符声明属性时,必须将变量的类型设置为非空类型(即不能使用 String?)。否则会在运行时抛出 UninitializedPropertyAccessException 异常。

适用场景

lateinit 的使用场景一般是在某些初始化操作比较复杂或者耗时的场景下。通过延迟初始化,可以避免不必要的性能消耗,并且可以减少代码的复杂度和冗余度。

举个例子,当我们定义一个 Fragment ,需要在 onCreateView() 方法中进行 View 的初始化,并在 onViewCreated() 方法中对 View 进行操作时,就可以将这些 View 声明为 lateinit 属性,避免了在 onCreateView() 方法中对 View 进行多次初始化的问题,提升了代码的可读性和性能。

总结

Kotlin lateinit 是一个延迟初始化变量的属性修饰符,适用于某些初始化操作复杂或耗时的场景下。需要注意的是,lateinit 修饰符只适用于非空类型属性。