kotlin 中关键字 lateinit

顾名思义,这是指一个延迟初始化的变量。在kotlin里面,如果在类型声明之后没有使用符号?,则表示该变量不会为null。但是这个时候会要求我们初始化一个值。有些时候,我们在声明变量的时候,并不能初始化这个变量。 

一个声明成lateinit的变量,如果在整个代码里面都没有进行任何的初始化,那么能否编译通过?如果你加上了lateinit关键字,kotlin的编译器不会做这种检查。如果你将变量声明为lateinit,它就认为你肯定会初始化,至于你是怎么初始化它的,它就不管了

1. lateinit 延迟加载

2.lateinit 只能修饰, 非kotlin基本类型

3如果你的代码真的显示初始化了lateinit变量,而又抛出了UninitializedPropertyAccessException异常, 因为你恰好将变量初始化为null了

因为Kotlin会使用null来对每一个用lateinit修饰的属性做初始化,而基础类型是没有null类型,所以无法使用lateinit。

你可能感兴趣的:(Android,kotlin)