Kotlin中判空!!与?

Posted zhangjin1120

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin中判空!!与?相关的知识,希望对你有一定的参考价值。

目录

官网怎么说?

https://kotlinlang.org/docs/null-safety.html#the-operator

哪一个有空指针风险?

!!,看下面的示例代码:

class TestList 
    init
        var list: ArrayList<String>? =null
        println(list!!.size)
    


fun main(args: Array<String>) 
    TestList()

什么情况下使用!!?

需要抛出NPE的时候,例如:kotlin中list!!.size相当于java中的:

if (list!=null) 
    list.size();
else 
    throw new NullPointerException();

什么情况下使用?

大多数情况下,都使用?,例如:

class Person 
    var name: String = ""
    var age = 0


class TestList 
    init 
        var list: ArrayList<String>? = null
        println(list?.size)
        var person: Person? = null
        println(person?.name)
    


fun main(args: Array<String>) 
    TestList()

此外,补充一个操作符?:,例如:A?:B,表示A对象为空时,返回B对象。常见用法:

        val roomList: ArrayList<Room>? = null
        if (roomList?.size ?: 0 > 0)     // 这一行添加了?:
            Log.d("TAG", "-->> 房间数不是0")
        

致谢:
Kotlin中 !!. 跟 ?. 的区别跟用法
Kotlin中?和!!的区别

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Kotlin中判空!!与?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )

Kotlin小笔记kotlin中的空指针检查

Kotlin语法学习_空指针检查

Kotlinkotlin中的空指针检查

Kotlin中的? 、?. 、?: 、!!、as?

Kotlin的标准函数和静态方法