kotlin学习(3)--空处理

412 阅读1分钟

null问题

  • kotlin更多地把运行时可能出现的null问题,以编译时错误的方式,提前在编译器强迫我们重视起来,防范于未然 可空性
  • 对于null问题,kotlin中除非另有规定,否则变量不可以为null值

使用 ? 标明这个变量是可空类型 var str:String? = null

kotlin区分可空类型和非可空类型,所以一个可空类型变量运行,而它又可能不存在,对于这种潜在风险,kotlin不允许你在可空类型上调用函数,除非主动接手安全管理

安全调用操作符

  • str.capitalize()直接这样会报错, str?.capitalize()这样就不报错了,编译器看到有安全调用操作符,所以它知道如何检查null值,如果遇到null,就跳过函数调用,而不是返回null

使用let标准函数

    str?.let { 
        //条件成立则执行
        if (it.isNotBlank()){
            it.capitalize()
        }else{
            ""
        }
    }

使用非空断言操作符

  • !!. 又称为感叹号操作符,当变量为null时,会抛出 KotlinNullPointerException str!!.capitalize()

使用空合并操作符

?:的意思是,如果左边的求值结果为null,就是用右边的结果值 val abc = str?:"abc"

先决条件函数

  • kotlin提供的内置函数,可以抛出带自定义信息的异常
  • checkNotNull:如果参数为空,抛出IllegalStateException,否则返回非null值
  • require:如果参数为false,则抛出IllegalStateException
  • requireNotNull:参数为空,则抛出IllegalStateException
  • error:如果参数为空,抛出IllegalStateException并输出错误信息
  • assert:如果参数为flase,则抛出AssertError异常,并打上断言编译器标记