美文网首页
Kotlin是如何避免空指针的?

Kotlin是如何避免空指针的?

作者: 刺客的幻影 | 来源:发表于2018-10-11 11:25 被阅读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.

    相关文章

      网友评论

          本文标题:Kotlin是如何避免空指针的?

          本文链接:https://www.haomeiwen.com/subject/zkavaftx.html