美文网首页Kotlin编程
Kotlin笔记 空指针检查

Kotlin笔记 空指针检查

作者: yangweigbh | 来源:发表于2017-01-19 11:35 被阅读69次

Kotlin相较于java的一大优势就是可以减少空指针的出现,变量的type需要指定是否能为空,不带?的type不能为空

var a: String = "abc"
a = null // compilation error
var b: String? = "abc"
b = null // ok

不为空的变量可以调用方法,但是为空的变量使用前显式需要检查是否为空

val l = a.length //合法

val l = b.length // 不合法

检查是否为空

  • option1
val l = if (b != null) b.length else -1

或者

if (b != null && b.length > 0) {
    print("String of length ${b.length}")
} else {
    print("Empty string")
}
  • option2

safe call 操作符

b?.length

如果b不为空,返回 b.length,如果b为空,返回null

safe call可以和let一起使用,只对非空元素进行操作

val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
     item?.let { println(it) } // prints A and ignores null
}

Elvis 操作符

?:如果符号左边的表达式不为空,则返回左边的表达式,否则返回右边的表达式

val l = b?.length ?: -1

如果b?.length不为空,则返回它,如果为空,返回-1

returnthrow可以放在elvis操作符的右边

fun foo(node: Node): String? {
    val parent = node.getParent() ?: return null
    val name = node.getName() ?: throw IllegalArgumentException("name expected")
    // ...
}

!!操作符

b!!,如果b不为空,则返回b,如果b为空,则throw NullPointerException。

val l = b!!.length

使用filterNotNull来过滤集合中空元素

相关文章

  • Kotlin笔记 空指针检查

    Kotlin相较于java的一大优势就是可以减少空指针的出现,变量的type需要指定是否能为空,不带?的type不...

  • Kotlin-空指针检查

    Kotlin搞空指针检查现象:java存在问题,大量的崩溃是空指针异常。原因:java的空指针异常是一种运行时异常...

  • Kotlin-空指针检查

    1、空指针异常是一种不受编程语言检查的运行时异常,只能由程序员主动通过逻辑判断来避免。 1.1、调用参数的方法之前...

  • Kotlin基础(8)-->空指针检查

    一、可空类型系统 Kotlin默认所有的参数和变量都不可为空。Int 表示不可为空的整型Int? 表示可为空的...

  • Kevin Learn Kotlin:空指针检查

    可空类型 当我们在声明方法时,如果允许在这个方法被调用的时候传给它 null 的实参,则需要显示地 在类型名称后面...

  • Kotlin之空指针检查以及Kotlin中的小魔术

    1、可空类型系统 Kotlin在编译时判空检查的机制几乎杜绝了空指针异常,虽然编译时判空机制有时候会导致代码变得比...

  • Kotlin 空指针

    针对空指针问题, Kotlin有专门的针对语法以避免问题。 可空类型 默认声明的变量是不能为 null 的,如果要...

  • Android应用常见Crash与对策(Kotlin)

    Crash原因 NullPointerException:Kotlin语法上控制空指针 IndexOutOfBou...

  • Kotlin基础认识 (5)可空数据类型

    一、可空类型概念 Kotlin的非空类型设计能够有效防止空指针异常。 定义可空类型 二、使用安全调用运算符 (?....

  • Kotlin空指针安全(null-safety)笔记

    Kotlin语言基础笔记 Kotlin流程控制语句笔记 Kotlin操作符重载与中缀表示法笔记 Kotlin扩展函...

网友评论

    本文标题:Kotlin笔记 空指针检查

    本文链接:https://www.haomeiwen.com/subject/uzcibttx.html