Koltin中属性在声明的同时也要求要被初始化,否则会报错:
延迟初始化使用的是lateinit
关键字,它可以告诉编译器,我会在晚些时候对这个变量进行初始化,这样就不用在一开始的时候给它赋值为null
了。
补充:
lateinit var
只能用来修饰类属性,不能用来修饰局部变量,并且只能用来修饰对象,不能用来修饰基本类型 (因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值)。lateinit var
的作用也比较简单,就是让编译期在检查时不要因为属性变量未被初始化而报错。- Kotlin相信当开发者显式使用
lateinit var
关键字的时候,他一定也会在后面某个合理的时机将该属性对象初始化的
判断它是否已经完成初始化
if(!::s.isInitialized){
}