当我们把Java自动转成Kotlin的时候,代码里会出现很多非空断言!!
。或者某些场景下因为IDE提示或编译错误,也让我们自己加上了一些!!
。
但使用!!
的后果是有可能抛出IllegalArgumentException:Parameter specified as non-null is null
。
如何避免!!
?
使用?.let/?.apply/?.run
这种是最常用的方法,也是首选的方法。但当有多个变量同时要判空时,或者需要处理为null时的逻辑,这种方式稍微有一点麻烦,下面会讲到一些新的方式。
|
|
用Val替代Var
|
|
此时会报错Smart cast to 'String' is impossible, because 'multableString' is a mutable property that could have been changed by this time
:app:compileDebugKotlin FAILED
。由于multableString是Var变量,为了避免多线程对变量的修改而出现Null的情况,kotlin从编译上进行了限制。
解决方法1是把var变量改为val变量
12345val mutableString:String = "a"fun run() {printText(mutableString)}解决方法2是写一个新的val变量,将var变量赋值给它,将val作为参数
12345fun run() {mutableString = "a"val string = mutableString ?: ""printText(string)}