Kotlin基础 1 - 空指针安全

空指针安全

Kotlin对比于Java的一个最大的区别就是它致力于消除空引用所带来的危险。在Java中,如果我们尝试访问一个空引用的成员可能就会导致空指针异常NullPointerException(NPE)的出现。在Kotlin语言中就解决了这个问题,下面来看看它是如何做到的。

不可空类型

    //不允许赋值为null
    val params:String = "" 

可空类型

    //允许赋值为null,但是在接下来的逻辑,编译器都要求判空
    val params:String? = null
    //为null输出null,否则输出length
    println(params?.length)

强制认定不为空

   //可空类型
   val params:String? = "www"
   //知道这个可空类型不可能为null,利用!!强制认定
   println(params!!.length)

若为空返回null,不继续执行

    //允许赋值为null,但是在接下来的逻辑,编译器都要求判空
    val params:String? = null
    //为null输出null,否则输出length
    println(params?.length)

不安全的类型转换(错误示范)

//    val parent:Parent = SubClass()   正确的
    val parent:Parent = Parent()      //错误的
    val sub:SubClass = parent as SubClass
    sub.track()

安全的类型转换(正确示范)

    val parent:Parent = SubClass()
    //如果继承关系不存在,sub == null
    val sub:SubClass? = parent as? SubClass
    //不为null就调用 track
    sub?.track()

不得不提的 Kotlin智能类型转换

    val parent:Parent = SubClass()
    if(parent is SubClass){
        //推倒类型,直接调用 subClass的方法
        parent.track()
    }

你可能感兴趣的:(Kotlin基础)