Skip to content
阅读进度

Kotlin 的空安全能彻底避免空指针吗? ​

返回 架构与 SDK 目录

标准回答 ​

Kotlin 区分可空和非空类型,帮助在编译期发现很多空值问题;但非空断言、Java 平台类型、初始化顺序等仍可能在运行时造成空指针。

关键机制 ​

  • String? 表示可空;?. 安全访问;?: 提供空值替代;!! 表示开发者断言非空,断言错误就会抛异常。
  • Java 返回值若缺少空性注解,Kotlin 可能视为平台类型,需要在边界校验;泛型集合中的元素也要考虑空值。
  • data class 自动生成常用值对象能力,扩展函数改善调用形式,when 支持清晰分支;理解语义后再追求简写。

通俗例子 ​

设备 SDK 是 Java 实现,getName 可能返回 null。进入 Kotlin 数据层先转换为明确可空类型,再决定显示默认名称还是报数据错误。

易混淆点 ​

不要把到处加 !! 当作“修复编译错误”;这只是把风险从编译期推迟到运行期。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。