lateinit:延迟初始化
java:
private LoginPresenter loginPresenter;
kotlin:
private lateinit var loginPresenter: LoginPresenter
by lazy:惰性初始化
惰性初始化是一种常见的模式,直到第一次访问该属性的时候,才根据需要创建对象的一部分,当初始化过程消耗大量资源并且在使用对象时并不总是需要数据时,这个非常有用
val nameB: String by lazy {
println("getLazy")
"123"
}
println(nameB)
println(nameB)
输入结果:
System.out: getLazy
System.out: 123
System.out: 123
首先需要注意的是:
- by lazy只能作用于val关键字标注的属性
- 当属性用到的时候才会初始化“lazy{}”里面的内容
- 而且再次调用属性的时候,只会得到结果,而不会再次执行lazy{}的运行过程