Kotlin中的lazy {}与getter()初始化之间的区别

时间:2019-03-17 19:19:14

标签: android kotlin getter-setter lazy-initialization

在kotlin中,我们可以同时使用这两种方法lazy{}getter()

惰性初始化:

internal val connector by lazy {
        serviceConnector
    }

getter():

internal val connector : ServiceConnector
        get() = serviceConnector

什么时候使用哪种方法以及这两种方法实际上是做什么的。哪种方法最好?

1 个答案:

答案 0 :(得分:1)

当您使用lazy委托时,val仅在您第一次使用时被初始化。因此,在您的代码中,首次访问connector时,lambda内部的代码将运行,并将结果分配给val

而是使用

get()重新定义当您尝试访问val时发生的情况。