美文网首页AndroidAndroid知识程序员
Android Kotlin null相关操作

Android Kotlin null相关操作

作者: NiceDream | 来源:发表于2017-06-05 08:45 被阅读55次

    NULL 操作
    在Kotlin中一切都是对象
    (甚至是Java中原始数据类型),一切都是可null的。所以,当然我们可以有一个可null的integer。
    指定一个变量是可null是通过在类型的最后增加一个问号。
    val a: Int? = null

    一个可nul类型,你在没有进行检查之前你是不能直接使用它。
    这个代码不能被编译:
    val a: Int? = nulla.toString()var b: String? = "abc"val l = b.length //compilation error

    检测null,对于可空引用,如果我们希望调用它的成员变量或者函数就必须先做检查,否则编译器会报错。
    1 使用if
    vala:Int?=null...if(a!=null){ a.toString()}

    2 使用了安全访问操作符(?)。Elvis operator(?: )
    只有这个变量不是null的时候才会去执行前面的那行代码。否则,它不会做任何事情。
    val a: Int? = null...a?.toString()

    使用Elvis operator (?: ):
    val a:Int? = nullval myString = a?.toString() ?: ""val myString = a?.toString() ?: return falseval myString = a?.toString() ?: throw IllegalStateException()

    3 使用!!操作符来强制编译器执行可null类型时跳过限制检查
    代码将会被编译,但是很显然会奔溃。
    val a: Int? = nulla!!.toString()

    4 类型转换中使用null
    我们知道类型转换可能产生ClassCastException异常,例如:
    var a: Long = 1val aInt: Int? = a as Int // java.lang.ClassCastException

    那么如何避免这个异常呢?改成下面形式就可以了。
    var a: Long = 1val aInt: Int? = a as? Int

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

    null和Java库
    Android SDK时,你可能看见所有Java方法的参数被标记为单个的!。Java中在一些获取对象的方法在Kotlin中显示返回Any!。这表示让开发者自己决定是否这个变量是否可null。 新版本的Android开始使用@Nullable和@NonNull注解来辨别参数是否可以是null或者否个函数是否可以返回null。

    相关文章

      网友评论

        本文标题:Android Kotlin null相关操作

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