Kotlin 避免 !! ?!
2022-03-10 本文已影响0人
zhongjh
用过Kotlin语言的大家都知道,对于 Null 的强制性检查是 Kotlin 的特点之一,可以避免很多在 Java 中隐藏的 NullPointerException异常
然后大家也知道,从java转换Kotlin过来的代码,按照以往的java思路,都会存在 Object!! 这样的代码情况。如果你没有针对这个进行处理,那么其实转换过来跟java一样没什么意思,依然存在以往的隐藏的 NullPointerException异常
那么,该篇文章就是如何针对性的处理!
1. 用 val 而不是 var
使用满足条件:
- 初始化时就已经确定具体值的,或者使用by委托来使用,委托是确保第一次取值的时候,进行第一次的赋值。
- 只能get,不能set,即是所谓的不可变
2. 使用 lateinit
使用满足条件:
- 当val不能满足条件的时候,比如最常用的需要在 onCreate() 代码中初始化
- 确保使用之前已经赋值完毕,否则,访问未初始化的 lateinit 属性会导致 UninitializedPropertyAccessException 异常
3. let、Elvis 运算符
使用满足条件:
- 使用这些都是确保为null时的逻辑如何如何,不为null时的逻辑如何如何,如果你只处理不为null时的逻辑,那么在将来要找到哪里具体错误的时候就很困难,所以,要确保这些就算是为null的,也是属于正常逻辑的时候才使用。否则,记得自己抛出异常。