1、lazy,其实也是属于代理的一种模式,经过用于生命周期类中延迟初始化一些对象,例如:
val lazyValue: String by lazy {
println("computed!")
"Hello"
}
fun main(args: Array<String>) {
println(lazyValue)
println(lazyValue)
}
打印结果:
computed!
Hello
Hello
备注:如果你想要线程安全,使用 blockingLazy(): 它还是按照同样的方式工作,但保证了它的值只会在一个线程中计算,并且所有的线程都获取的同一个值。
网友评论