Kotlin laterinit 与 by lazy

2019-04-21  本文已影响0人  差不多先生Ai

laterinit 与by lazy 是Kotlin中两种不同延迟初始化的实现。

laterinit 只用于变量var     by lazy 只用于常量val

lazy()方法只是接受一个lambda并返回一个Lazy<T> 实例的函数,返回的实例可以作为实现延迟属性的委托:第一次调用get()会执行已传递给lazy()的lambda表达式并记录结果,后续调用get()只是返回记录的结果。

lazy()方法常用于只获取不赋值并且多次使用的对象。

laterinit则用于只能生命周期流程中进行获取或者初始化的变量

laterinit 不能用于可空的属性上和java的基本类型上:(Int、Long等)

laterint 可以在任何位置初始化,并且可以初始化多次。而by lazy只初始化一次

上一篇下一篇

猜你喜欢

热点阅读