美文网首页
Kotlin中的 null安全/空安全

Kotlin中的 null安全/空安全

作者: 陌上初寒l | 来源:发表于2017-05-19 16:12 被阅读50次

    在Kotlin中,类型系统将可空类型和不可空类型进行了区分,
    例如:String为不可空类型,String?为可空类型
    直接调用空的成员变量或者函数将会编译不通过

    var a: String? = "abc"
    val l = a.length  //compilation error
    

    对于可空引用,如果希望调用它的成员变量或者成员函数,直接调用会出现编译错误,有三种方法可以调用:

    1. 在调用前,需要先检查,因为可能为null
    2. 使用b?.length的形式调用,如果b为null,返回null,否则返回b.length
    3. 使用b!!.length()的形式调用,如果b为null,抛出空指针异常,否则返回b.length

    另外,我们知道类型转换可能产生ClassCastException异常,例如:

    var a: Long = 1
    val aInt: Int? = a as Int  //java.lang.ClassCastException
    

    那么如何避免这个异常呢?改成下面形式就可以了。

    var a: Long = 1
    val aInt: Int? = a as? Int
    

    上面这种方法就是安全类型转换,如果类型转换不成功,就会返回null,而不是抛出ClassCastException异常。


    本文已经同步到我的个人博客:传送门

    相关文章

      网友评论

          本文标题:Kotlin中的 null安全/空安全

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