Kotlin中的 null安全/空安全

在Kotlin中,類型系統將可空類型和不可空類型進行了區分,
例如:String為不可空類型,String?為可空類型
直接調用空的成員變量或者函數將會編譯不通過

var a: String? = "abc"
val l = a.length  //compilation error

對于可空引用,如果希望調用它的成員變量或者成員函數,直接調用會出現編譯錯誤,有三種方法可以調用:

  1. 在調用前,需要先檢查,因為可能為null
  2. 使用b?.length的形式調用,如果b為null,返回null,否則返回b.length
  3. 使用b!!.length()的形式調用,如果b為null,拋出空指針異常,否則返回b.length

另外,我們知道類型轉換可能產生ClassCastException異常,例如:

var a: Long = 1
val aInt: Int? = a as Int  //java.lang.ClassCastException

那么如何避免這個異常呢?改成下面形式就可以了。

var a: Long = 1
val aInt: Int? = a as? Int

上面這種方法就是安全類型轉換,如果類型轉換不成功,就會返回null,而不是拋出ClassCastException異常。


本文已經同步到我的個人博客:傳送門

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容