每日一题:kotlin延迟初始化

19 阅读1分钟

lateinit

只能修饰var
不能为空
不能初始化基本数据类型
可以在任何位置初始化,并可多次初始化
必须保证在使用前已经初始化

by lazy

只能修饰val
在首次调用时初始化,之后直接返回值
可指定初始化模式
1.Synchronized(默认),只会初始化一次,线程安全
2.Publication,可能初始化多次,但只会返回第一次的值
3.none,线程不安全,确保不在多线程中调用