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中?和!!的区别
以上是关于Kotlin中判空!!与?的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )