對比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)用,報錯提示
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點結(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-12java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載
本文主要介紹了java原裝代碼完成pdf在線預(yù)覽和pdf打印及下載的方法,具有一定的參考價值,下面跟著小編一起來看下吧2017-02-02