Kotlin是如何避免空指针的?

2018-10-11  本文已影响0人  刺客的幻影

不知不觉使用Kotlin开发Android已经大半年的时间了,体验到的优势如下:
1、空指针安全
2、实用的扩展函数和内联函数
3、无数的语法糖
4、简洁的代码风格
等等..
这些优势让kotlin比java开发起来效率提升了不少,今天主要谈一下第一点,Kotlin是如何避免空指针的:
Kotlin的类型可分为可空和非空,这里以实体类TestBean为例:

data class TestBean(var beanA: BeanA?)

data class BeanA(
        val str1: String?,
        val str2:String
)

BeanA为可空类型,可以被赋值为null,但是当你调用其成员或者方法时,编译不会通过:


image.png

这个时候有两种方案解决这个报红:

  1. 在调用后加上?,其实就是以下代码简化的效果:
if(testBean.beanA!=null){
//                ...
 }

打印结果:


image.png
  1. 使用!!,这个要慎用,其意义就是断言当前对象不为空,一定会执行下去,如果确实不为空就没问题,如果为空那就会像java一样抛出空指针异常,导致程序崩溃:


    image.png

    崩溃异常:


    image.png
    现在我们就从原理上知道了Kotlin是如何解决空指针问题的,一个?就能解决那么多空类型判断,更何况嵌套的情形,不仅仅是空指针,使用kotlin之后再也不用findViewById了,各种便捷的集合操作,单利模式,扩展函数、内联函数,监听器、lambda等等,开发效率会提升不少。
    总之,Life is short , u need kotlin.
上一篇下一篇

猜你喜欢

热点阅读