1.使用的时候再加载
2.有如下代码
fun main(args: Array<String>) {
println(age)
println(age)
}
val age: Int by lazy {
println("age被初始化了")
8
}
class Person {
/**
* 用的时候再加载
*/
val name: String by lazy {
"张三"
}
}
输出结果如下:
image.png
- 可以看到age被初始化了只执行了一次
2.by lazy的条件
- 字段必须是val不可变
- by lazy可以放到成员变量中,也可以单独存在
- by lazy的返回值是最后一行
- by lazy 属于线程安全的,多个线程访问,也不会初始化多次

image.png









网友评论