Kotlin空安全空類型淺談
正文
首先非空變量和可空變量的區(qū)別:
// name為不可為空的變量, 不能賦值為null ,若有判斷 if(name==null) 無意義,因為肯定不為null var name : String = "" // role 為可空變量 var role : String? = ""
非空變量賦值為Null為報如下錯誤:
一、判斷可空變量是否為null的方式
1、
var name : String ?= "" if (name == null){ Log.i(Tag,"name==null") }else{ Log.i(Tag, "name!=null") }
2、
?.的意思為若name為null 。則返回null
var name : String ?= "abc" Log.i(Tag,"name="+name?.length)
二、涉及到返回可空值的函數(shù)使用方法,在返回類型后同時加?
var name:String?="abc" fun getNameLength():String?{ return name }
三、let操作符
用法:變量?.let{ ... } , 作用為忽略null的情況
例如篩選出一個集合非空的元素集合
常規(guī)寫法:
fun logUnNullList(arr:Array<String>):Unit{ for (item in arr){ if (arr==null){ continue }else{ Log.i(Tag,"非空元素為->"+item) } } }
用let操作符寫法:
fun logUnNullList(arr:Array<String>):Unit{ for (item in arr){ item?.let {Log.i(Tag,"非空元素為->"+item) } } }
四、Evils操作符(?: !! as)
1、?:
對于一個可空變量的使用,若當該變量為空的時候賦予一個特定值使用
var name:String?="abc" var nameLength:Int = 0 nameLength = name?.length?:-1 // 取name的length ,若name為null,則nameLength的值為-1
這樣要比傳統(tǒng)寫法 if(name==null) -1 else name.length 要簡介
2、!!
在一個可空變量使用的時候后面加上!! ,則當該變量為null的時候拋出空指針異常
var name:String?=null nameLength = name!!.length
此時name為null ,因為使用了!! ,則拋出空指針異常
3、as、as?
類型轉(zhuǎn)換
當使用as的時候若類型轉(zhuǎn)換失敗則拋出類型轉(zhuǎn)換(ClassCastException)異常
當使用as?的時候若類型轉(zhuǎn)換失敗則返回null,不會拋出異常
var name:String?= 12 as String
可見12 轉(zhuǎn)換String 類型異常
當使用as?的時候
var name:String?= 12 as? String Log.i(Tag,"name="+ name) // 打印日志: name=null
總結(jié):
拋出異常的 !! as 盡量少用,用as? ?. ?: let來代替
以上就是Kotlin空安全空類型淺談的詳細內(nèi)容,更多關于Kotlin空安全空類型的資料請關注腳本之家其它相關文章!
相關文章
Android開源框架的SlidingFragment的使用示例
今天小編就為大家分享一篇關于Android開源框架的SlidingFragment的使用示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03Kotlin標準函數(shù)與靜態(tài)方法基礎知識詳解
Kotlin中的標準函數(shù)指的是Standard.kt文件中定義的函數(shù),任何Kotlin代碼都可以自由地調(diào)用所有的標準函數(shù)。例如let這個標準函數(shù),他的主要作用就是配合?.操作符來進行輔助判空處理2022-11-11android之計時器(Chronometer)的使用以及常用的方法
在Android的SDK中,為我們提供了一個計時器,這個計時器稱為Chronometer,我們可以成它為Android的一個組件,同時它也具備自己獨有的方法2013-01-01Android中Retrofit 2.0直接使用JSON進行數(shù)據(jù)交互
本篇文章主要介紹了Android中Retrofit 2.0直接使用JSON進行數(shù)據(jù)交互,具有一定的參考價值,有興趣的可以了解一下2017-08-08