Kotlin如何预防空指针和解决“!!”
2021-07-22 本文已影响0人
Tongsr
-
用Val而不是Var
在 Kotlin 中 val 代表只读,var 代表可变。建议尽可能多的使用 val。val 是线程安全的,并且不需要担心 null 的问题。只需要注意 val 在某些情况下也是可变的就行了 -
使用lateinin
有些情况我们不能使用 val,比如,在 Android 中某些属性需要在 onCreate() 方法中初始化。对于这种情况,Kotlin 提供了 lateinit 关键字 -
使用let函数
配合let和?能优雅的进行判空处理 -
创建全局函数来处理更复杂的情况
遇到一些复杂的情况不能使用let函数的时候,创建一个全局的函数来判空fun <T1, T2> ifNotNull(value1: T1?, value2: T2?, bothNotNull: (T1, T2) -> (Unit)) { if (value1 != null && value2 != null) { bothNotNull(value1, value2) } }
-
使用Elvis运算符
使用?:语法糖来代替if else -
自定义崩溃信息
如果我们使用 !!,那么当这个变量为 null 时,只会简单的抛出一个KotlinNullPointerException。这时我们可以用 requireNotNull 或 checkNotNull 来附带异常信息,方便我们调试