Kotlin的lateinit关键词
lateinit,延迟初始化。有时,并不能定义一个变量或对象值为空,而也没办法在对象或变量在定义声明时就为它赋值初始化,那么这时就需要用到Kotlin提供的延迟初始化lateinit。比如,有些依赖注入框架需要Kotlin的lateinit语言特性。另外,在Android中,有些写在外层的View对象,如Button,TextView虽然可以通过?+null定义,但在使用时候必须加很多 ?.,显得代码臃肿多余,Kotlin设计出lateinit,这样开发者又可以像写Java那样,直接 button. 了,而不是 button?.
但Kotlin语言假定开发者在使用该lateinit变量或对象时,开发者会完成初始化赋值、保证提供非空(null)值(然而,天知道呢!也许开发者还是会忘记!)。lateinit关键词只是告诉编译器,不要在编译阶段因为变量没有初始化赋值而报错。
在println(a)时候,编译器已经报红:
Variable 'a' must be initialized
而d因为使用了lateinit修饰,被编译器放行。
kotlin懒加载lazy与lateinit延迟初始化-CSDN博客文章浏览阅读179次。lazy 用于单例模式,当且仅当变量被第一次调用时候,才会执行。lazy()第一次调用会执行并记录结果,后续调用只返回结果。lateinit 用于变量 var, lazy 用于常量 val。耗费很重资源初始化的类。https://blog.csdn.net/zhangphil/article/details/129262829