可为空类型和非空类型

Kotlin系统旨在消除代码中的空引用,也被称为The Billion Dollar Mistake。

在其他语言中的一个很常见的陷阱,包括Java,就是引用了一个对象的空引用,导致一个空异常。Java中的对应异常就是NullPointerException或者NPE作为简称。

Kotlin类型系统旨在消除代码中空指针。会造成空指针的方式可能是如下的几种情形:

  • 显示的抛出NullPointerException()
  • 使用了!!操作符,下面的内容会有介绍
  • 外部的Java代码导致的
  • 有些数据与初始化的不一致(未被初始化的this变量在其他地方使用)

在Kotlin中,类型系统可以分辨出可能为空的引用(可为空的引用)和不能为空的引用。比如一个正常的String类型不能是空的:

var a: String = "abc"
a = null // 编译错误

为了允许存在null,我们可以声明一个变量可以为空,比如上面的例子:

var b: String? = "abc"
b = null // ok

现在,你可以放心的访问a的属性,它被保证不会产生空指针:

val l = a.length

但是如果你想要访问b的属性,那是不安全的:

val l = b.length // 可能会存在空指针

results matching ""

    No results matching ""