
前言
相传NPE值十亿美金。哇~那是好多?
Kotlin为何这么??号称解决了NPE呢?
① NPE从哪里来
② Kotlin从哪几个方面解决了NPE
③ Kotlin到底解决了什么?
④ 在什么时候,Kotlin的NPE解决方案是失灵的?
NPE的来源
有四个来源
- 显式调用 throw NullPointerException()
- 使用了 !! 操作符
- 这是Kotlin提供的用户可强制抛出NPE的操作符
- 使用了!!只要碰到NPE就会如期抛出
- 有些数据在初始化时不一致
- this泄漏
未初始化的this被传递,并用于其他地方 - 调用了一个 超类中的open成员,并在 派生类中使用了 该open成员的未初始化 状态
- this泄漏
- Java 互操作
- 企图访问平台类型的 null 引用的成员
- 平台类型 即 Java 声明的类型
- java的引用可能是null
- 平台类型的范例
val list = ArrayList<String>() // 非空(构造函数结果) list.add("Item") val size = list.size // 非空(原生 int) val item = list[0] // 推断为平台类型(普通 Java 对象)item.substring(1) // 允许
- 企图访问平台类型的 null 引用的成员
Kotlin防NPE实战指南:5大技巧解析

本文介绍了Kotlin处理空指针异常(NPE)的五种方法,包括安全调用操作符?.、Elvis操作符?:、!!操作符以及安全类型转换。Kotlin通过这些特性在一定程度上缓解了NPE问题,但仍然需要关注Java互操作和类型转换等场景中的潜在风险。
最低0.47元/天 解锁文章
784

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



