Kotlin空安全空类型浅谈

 更新时间:2022年06月23日 15:09:10   作者:听着music睡  
这篇文章主要为大家介绍了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空安全空类型的资料请关注脚本之家其它相关文章!

相关文章

  • Android开发强制横屏和强制竖屏设置实例代码

    Android开发强制横屏和强制竖屏设置实例代码

    本篇文章主要介绍了Android开发强制横屏和强制竖屏设置实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android 根据手势顶部View自动展示与隐藏效果

    Android 根据手势顶部View自动展示与隐藏效果

    这篇文章主要介绍了Android 根据手势顶部View自动展示与隐藏效果,本文给大家介绍非常详细包括实现原理和实例代码,需要的朋友参考下吧
    2017-08-08
  • Android关键字persistent详细分析

    Android关键字persistent详细分析

    这篇文章主要介绍了Android关键字persistent的相关资料,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-04-04
  • PC版与Android手机版带断点续传的多线程下载

    PC版与Android手机版带断点续传的多线程下载

    这篇文章主要介绍了PC版与Android手机版带断点续传的多线程下载的相关资料,需要的朋友可以参考下
    2015-10-10
  • Android多线程断点续传下载示例详解

    Android多线程断点续传下载示例详解

    这篇文章主要为大家详细介绍了Android多线程断点续传下载示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android 实现页面跳转

    Android 实现页面跳转

    android使用Intent来实现页面跳转,接下来通过本文给大家分享Android 实现页面跳转的实例代码,需要的的朋友参考下吧
    2017-09-09
  • Android用Canvas绘制贝塞尔曲线

    Android用Canvas绘制贝塞尔曲线

    这篇文章主要为大家详细介绍了Android用Canvas绘制贝塞尔曲线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Android学习教程之日历库使用(15)

    Android学习教程之日历库使用(15)

    这篇文章主要为大家详细介绍了Android学习教程之日历库使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 新手必看Android Studio入门详解

    新手必看Android Studio入门详解

    上篇文章已经说过了Android Studio的安装配置,这篇文章主要介绍了Android Studio入门详解以及一些常见的报错,新手同学一起从这里开始完成我们的第一个Android项目吧!
    2021-08-08
  • AndroidQ(10)黑暗模式适配的实现

    AndroidQ(10)黑暗模式适配的实现

    这篇文章主要介绍了AndroidQ(10)黑暗模式适配的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论