lateinit by lazy

2020-07-26  本文已影响0人  小虫虫奇遇记

Kotlin中延迟初始化的方法:
lateinit , by lazy

lateinit用在var变量,作用:编译器检查时不因为变量未初始化而报错。

private lateinit var mRootView: View

然后在inflateView之后再对变量进行赋值,使用的时候默认非空

by lazy 属性委托, 用在val常量(相当于java 中final变量):

private val a: Int by lazy { 5 }

虽然两者都可以推迟属性初始化的时间,但是lateinit var只是让编译期忽略对属性未初始化的检查,后续在哪里以及何时初始化还需要开发者自己决定。

而by lazy真正做到了声明的同时也指定了延迟初始化时的行为,在属性被第一次被使用的时候才自动初始化,且保证了线程安全。

上一篇 下一篇

猜你喜欢

热点阅读