if (!this::mVar.isInitialized) {
需要注意的是变量前面一定要加上"this::",不然会提示找不到"isInitialized"这个方法
一、背景protected lateinit var mVar: String上面mVar这个变量表示不为null,但是需要延迟初始化,如果在使用这个变量时没有初始化则会抛出异常;在有些时候我们可能需要判断它有没有初始化,如果没有初始化则需要另外给它赋值,在java中,可以通过if(mVar != null)来判断,但是在kotlin中,则会弹出下面的提示:Condition ‘mVar != null’ is always ‘true’二、解决方案if (!this::mVar.isIni
protected lateinit var mTitle: String
上面mTitle这个变量表示不为null,但是需要延迟初始化,如果在使用这个变量时没有初始化则会抛出异常;
在有些时候我们可能需要判断它有没有初始化,如果没有初始化则需要另外给它赋值,在java中,可以通过if(mTitle != null)来判断,但是在kotlin中,则会弹出下面的提示:
Condition ‘mT...
在 Kotlin 中使用 lateinit 修饰符可以实现对象的延迟初始化,当我们需要使用这个对象又无法确定该对象是否已经被初始化时,可以使用 isInitialized 进行判断。示例如下:
class MyService{
fun performAction(): String = "foo"
class Test{
private lateinit var myService: MyService
fun checkInit(){
// 如果 myService 对象还未初始化,则进
初学 Kotlin , 对变量机制不清楚的同学们 , 看完这篇博客基本就对变量的定义和使用有清晰的认识 ;
1 . 变量定义只有四种情况 : ① 非空变量 / 可空变量 直接赋值非空初始值 ; ② 可空变量使用 ?= null 赋空值 ; ③ 非空变量 ( 引用类型 ) 使用 lateinit 修饰 ; ④ 抽象属性变量不初始化 ;
2 . !! 与 ? 修饰符 : 仅对于 可空类型 有效 , ? 高级不报错 , !! 低级报空指针异常 ;
lateinit var lateInitVar: String
fun checkInit() {
if(this::lateInitVar.isInitialized){ //重要,this::前缀是必须的。
//如果已经初始化了,返回true }
kotlin早就火起来了,我才刚刚学会初始化,步伐落后一大截, 不,是从南极到北极的距离。
网上好多关于kotlin初始化的博客,官网都给出了详细的步骤,下面是我自己实现步骤,还是写写吧,反正闲着也是闲着:
1、在项目根build.gradle下添加代码:
buildscript {
ext.kotlin_version = '1.2.30'
repositories ...