Kotlin如何预防空指针和解决“!!”

  1. 用Val而不是Var
    在 Kotlin 中 val 代表只读,var 代表可变。建议尽可能多的使用 val。val 是线程安全的,并且不需要担心 null 的问题。只需要注意 val 在某些情况下也是可变的就行了

  2. 使用lateinin
    有些情况我们不能使用 val,比如,在 Android 中某些属性需要在 onCreate() 方法中初始化。对于这种情况,Kotlin 提供了 lateinit 关键字

  3. 使用let函数
    配合let和?能优雅的进行判空处理

  4. 创建全局函数来处理更复杂的情况
    遇到一些复杂的情况不能使用let函数的时候,创建一个全局的函数来判空

    fun  ifNotNull(value1: T1?, value2: T2?, bothNotNull: (T1, T2) -> (Unit)) {
       if (value1 != null && value2 != null) {
           bothNotNull(value1, value2)
       }
    }
    
  5. 使用Elvis运算符
    使用?:语法糖来代替if else

  6. 自定义崩溃信息
    如果我们使用 !!,那么当这个变量为 null 时,只会简单的抛出一个KotlinNullPointerException。这时我们可以用 requireNotNull 或 checkNotNull 来附带异常信息,方便我们调试

你可能感兴趣的:(Kotlin如何预防空指针和解决“!!”)