kotlin: by lazy的应用
一,说明:
by lazy 是一种懒加载模式,也就是说变量的值并不是在声明的时候赋值的,
而是在真正用到这个变量的时候,才会加载它,也就是为它赋值。
并且第一次赋值后会记录好这个值,以后的访问,都会直接返回这个值。
by lazy 模式只会执行一次赋值操作,也就是首次用到变量的时候,
变量一旦被赋值后,就不可以改变其值了。
1、特性
- 修饰只读变量:仅用于
val
声明。 - 自动初始化:首次访问时执行 Lambda 表达式并缓存结果。
- 支持所有类型:包括基本数据类型(如
Int
、Boolean
)。 - 线程安全:默认使用
LazyThreadSafetyMode.SYNCHRONIZED
(安全但略慢),可自定义模式。 - 无异常风险:首次访问时必然初始化。
2、适用场景
- 高开销初始化:如数据库连接、文件读取。
- 单例模式:确保全局唯一实例。
- 条件性初始化:仅在需要时才创建对象。
和lateinit的区别
二,代码:
1,类:
package com.example.okdemo1.model
class Demo5 {
//用到name时才会执行代码初始化
private val name: String by lazy { "王富贵" }
private val job = "村长"
//方法:打印信息
fun printInfo() {
println("职业:"+job)
println("姓名:"+name)
}
}
2,调用
//点击
binding.btnIncrement.setOnClickListener {
val demoObj = Demo5()
demoObj.printInfo()
}