Kotlin中的严格空安全与类型转换
1. 严格空安全的重要性
在软件开发中,空指针异常(NullPointerException)是一个常见且令人头疼的问题。在Java系统里,缺少空检查是最频繁出现的错误模式,空指针异常也是Java中错误的最大来源。甚至发明了空引用的Tony Hoare爵士,在2009年的一次会议上为此道歉,称其为“十亿美元的错误”。
Kotlin为了避免空指针异常,采取了将运行时错误转换为编译时错误的措施,以提高编程语言的安全性。其中一个重要的方式是在语言类型系统中添加空安全性机制。
2. Kotlin的类型系统与空安全
Kotlin的类型系统区分了可以持有空值的引用(可空引用)和不能持有空值的引用(非空引用)。默认情况下,常规类型不能为null,除非显式允许。要存储空引用,需要在变量类型声明后添加问号后缀来标记变量为可空。示例如下:
val age: Int = null // 错误,此类型不允许为null
val name: String? = null // 允许,类型被标记为可空
如果尝试在可能为null的对象上调用方法,必须先进行空检查,否则编译器会报错:
val name: String? = null
// ...
name.toUpperCase() // 错误,该引用可能为null
每个非可空类型在Kotlin中都有对应的可空类型,例如 Int 对
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



