本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
在Kotlin中,by lazy 和 lateinit 都是用于延迟初始化的手段,但它们各自有不同的用法和特点。下面详细讨论它们的作用和区别。
1. by lazy
作用:
by lazy 是一种委托属性,用于延迟初始化一个只读属性。属性在第一次访问时才会被初始化,并且初始化操作只会执行一次。
用法:
语法:
val property: Type by lazy { initializer }
lazy 的默认线程安全模式是 LazyThreadSafetyMode.SYNCHRONIZED,它确保多线程环境下属性只会被初始化一次。
示例:
val myValue: String by lazy {
println("Computed only once")
"Hello, World!"
}
// 第一次访问 myValue,会触发初始化代码块执行
println(myValue) // 输出: "Computed only once" 和 "Hello, World!"
//

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



