對比Java講解Kotlin中?.與!!.的區(qū)別
前言
本文主要介紹了關(guān)于Kotlin中?.與!!.的區(qū)別,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧
1、?.
//kotlin:
a?.foo()
//相當(dāng)于java:
if(a!=null){
a.foo();
}
2、!!.
//kotlin:
a!!.foo()
//相當(dāng)于java:
if(a!=null){
a.foo();
}else{
throw new KotlinNullPointException();
}
時間寶貴的同學(xué)可以不要看下面的了(` _ `)
3、再來說下"!!"
值得一提的是,當(dāng)我們直接調(diào)用一個可空變量的某方法或某成員變量時:

直接調(diào)用,報(bào)錯提示
Android Studio會提示在一個可空變量上,只有"安全調(diào)用"(safe call (?.))和"不為空的斷言調(diào)用"(non-null assert call(!!.))是被允許的,可以得知"!!"相當(dāng)于是斷言操作,即:
//(Kotlin)
a!!.foo()
//等于(Kotlin):
a!!
a.foo()
//相當(dāng)于(Java):
assert a!=null;
a.foo();
//也就相當(dāng)于(Java):
if(a == null){
throw new NullPointException();
}
a.foo();
進(jìn)而有上面第2點(diǎn)結(jié)論。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
基于Java中throw和throws的區(qū)別(詳解)
下面小編就為大家?guī)硪黄贘ava中throw和throws的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
解讀SpringBoot中addCorsMappings配置跨域與攔截器互斥問題的原因
這篇文章主要介紹了解讀SpringBoot中addCorsMappings配置跨域與攔截器互斥問題的原因,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載
本文主要介紹了java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載的方法,具有一定的參考價值,下面跟著小編一起來看下吧2017-02-02

