空安全
Kotlin 的关键特性之一是 空安全,
它在编译时而不是在运行时遇到著名的 NullPointerException
时,干净利落地处理 null
值。这通过可空性声明和表达“有值或无值
”语义,而无需支付诸如 Optional
之类的包装器的成本,从而使应用程序更安全。
(Kotlin 允许将函数式构造与可空值一起使用。请参阅这篇
关于 Kotlin 空安全的综合指南。)
尽管 Java 不允许在其类型系统中表达空安全,但 Spring Framework 通过在 org.springframework.lang
包中声明的工具友好型注解,提供了 整个 Spring Framework API 的空安全。
默认情况下,Kotlin 中使用的 Java API 类型被识别为
平台类型,
对其空检查有所放宽。
Kotlin 对 JSR-305 注解的支持
和 Spring 可空性注解为 Kotlin 开发者提供了整个 Spring Framework API 的空安全,
其优势在于在编译时处理 null
相关问题。
Reactor 或 Spring Data 等库提供了空安全 API,以利用此特性。 |
您可以通过添加带有以下选项的 -Xjsr305
编译器标志来配置 JSR-305 检查:-Xjsr305={strict|warn|ignore}
。
对于 Kotlin 1.1+ 版本,默认行为与 -Xjsr305=warn
相同。
strict
值是必需的,以便在从 Spring API 推断出的 Kotlin 类型中考虑 Spring Framework API 的空安全,但应在使用时了解 Spring API 的可空性声明即使在次要版本之间也可能演变,并且将来可能会添加更多检查。
泛型类型参数、可变参数和数组元素的可空性尚未支持, 但应在即将发布的版本中支持。请参阅 此讨论 以获取最新信息。 |