用過Kotlin語言的大家都知道,對于 Null 的強制性檢查是 Kotlin 的特點之一,可以避免很多在 Java 中隱藏的 NullPointerException異常
然后大家也知道,從java轉(zhuǎn)換Kotlin過來的代碼,按照以往的java思路,都會存在 Object!! 這樣的代碼情況。如果你沒有針對這個進(jìn)行處理,那么其實轉(zhuǎn)換過來跟java一樣沒什么意思,依然存在以往的隱藏的 NullPointerException異常
那么,該篇文章就是如何針對性的處理!
1. 用 val 而不是 var
使用滿足條件:
- 初始化時就已經(jīng)確定具體值的,或者使用by委托來使用,委托是確保第一次取值的時候,進(jìn)行第一次的賦值。
- 只能get,不能set,即是所謂的不可變
2. 使用 lateinit
使用滿足條件:
- 當(dāng)val不能滿足條件的時候,比如最常用的需要在 onCreate() 代碼中初始化
- 確保使用之前已經(jīng)賦值完畢,否則,訪問未初始化的 lateinit 屬性會導(dǎo)致 UninitializedPropertyAccessException 異常
3. let、Elvis 運算符
使用滿足條件:
- 使用這些都是確保為null時的邏輯如何如何,不為null時的邏輯如何如何,如果你只處理不為null時的邏輯,那么在將來要找到哪里具體錯誤的時候就很困難,所以,要確保這些就算是為null的,也是屬于正常邏輯的時候才使用。否則,記得自己拋出異常。