protected lateinit var mTitle: String

上面mTitle这个变量表示不为null,但是需要延迟初始化,如果在使用这个变量时没有初始化则会抛出异常;
在有些时候我们可能需要判断它有没有初始化,如果没有初始化则需要另外给它赋值,在java中,可以通过if(mTitle != null)来判断,但是在kotlin中,则会弹出下面的提示:

Condition ‘mTitle != null’ is always ‘true’

所以正确的判断方法是:

if (!this::mTitle.isInitialized) {//没有初始化过
            mTitle = "默认值"

需要注意的是变量前面一定要加上"this::",不然会提示找不到"isInitialized"这个方法

protected lateinit var mTitle: String上面mTitle这个变量表示不为null,但是需要延迟初始化,如果在使用这个变量时没有初始化则会抛出异常;在有些时候我们可能需要判断它有没有初始化,如果没有初始化则需要另外给它赋值,在java中,可以通过if(mTitle != null)来判断,但是在kotlin中,则会弹出下面的提示:Condition ‘mT...
Kotlin设计之初就是不允许非null变量在声明期间不进行初始化的,为了解决这个问题,Kotlin lateinit 允许我们先声明一个变量,然后在程序执行周期的将来某个时候将其初始化,让编译检查时不会 因为属性变量未被初始化而报错。如果未初始化将导致以下异常: kotlin.UninitializedPropertyAccessException: lateinit property mList has not been initialized 所以我们在 Kotlin 1.2及更高版本上,经常使用基于反射的API 快速检查lateinit属性是否初始化。 private latei
Kotlin 中使用 lateinit 修饰符可以实现对象的延迟初始化,当我们需要使用这个对象又无法确定该对象是否已经被初始化时,可以使用 isInitialized 进行判断。示例如下: class MyService{ fun performAction(): String = "foo" class Test{ private lateinit var myService: MyService fun checkInit(){ // 如果 myService 对象还未初始化,则进
protected lateinit var mVar: String 上面mVar这个变量表示不为null,但是需要延迟初始化,如果在使用这个变量时没有初始化则会抛出异常; 在有些时候我们可能需要判断它有没有初始化,如果没有初始化则需要另外给它赋值,在java中,可以通过if(mVar != null)来判断,但是在kotlin中,则会弹出下面的提示: Condition ‘mVar != null’ is always ‘true’ 二、解决方案 if (!this::mVar.isIni private var name0: String //报错 private var name1: String = "xiaoming" //不报错 private var name2: String? = null //不报错 复制代码  可是有的时候,我并不想声明一个类型可空的对象,而且我也没办法在对象一声明的时候... lateinit var lateInitVar: String fun checkInit() { if(this::lateInitVar.isInitialized){  //重要,this::前缀是必须的。      //如果已经初始化了,返回true       } ```kotlin val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI) val isConnected = networkInfo?.isConnected ?: false 首先获取`ConnectivityManager`对象,然后通过`getNetworkInfo`方法获取WiFi的网络信息。最后判断WiFi是否连接,可以使用`isConnected`属性。 The exception was not handled due to missing onError handler in the subscribe() method call 11249