Kotlin基础 1

来源:互联网 发布:手机注册淘宝店铺步骤 编辑:程序博客网 时间:2024/06/05 19:04

空指针安全

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()    }
原创粉丝点击