这篇文章主要为大家介绍了Kotlin空安全空类型的实用技巧浅谈,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
首先非空变量和可空变量的区别:
// 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)二、涉及到返回可空值的函数使用方法,在返回类型后同时加?
var name:String?="abc"
fun getNameLength():String?{
return name
}三、let操作符
用法:变量?.let{ ... } , 作用为忽略null的情况
例如筛选出一个集合非空的元素集合
常规写法:
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这样要比传统写法 if(name==null) -1 else name.length 要简介
2、!!
在一个可空变量使用的时候后面加上!! ,则当该变量为null的时候抛出空指针异常
var name:String?=null
nameLength = name!!.length此时name为null ,因为使用了!! ,则抛出空指针异常

3、as、as?
类型转换
当使用as的时候若类型转换失败则抛出类型转换(ClassCastException)异常
当使用as?的时候若类型转换失败则返回null,不会抛出异常
var name:String?= 12 as String可见12 转换String 类型异常

当使用as?的时候
var name:String?= 12 as? String
Log.i(Tag,"name="+ name)
// 打印日志: name=null总结:
抛出异常的 !! as 尽量少用,用as? ?. ?: let来代替
以上就是Kotlin空安全空类型浅谈的详细内容,更多关于Kotlin空安全空类型的资料请关注编程学习网其它相关文章!
本文标题为:Kotlin空安全空类型浅谈
基础教程推荐
- Flutter手势密码的实现示例(附demo) 2023-04-11
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- Android中的webview监听每次URL变化实例 2023-01-23
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- Android多返回栈技术 2023-04-15
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- android studio按钮监听的5种方法实例详解 2023-01-12
