Null-safety
Kotlin 的一项主要特性是 空安全,它在编译时干净利落地处理 null
值,而不是在运行时遇到著名的 NullPointerException
。通过空值声明和表达 “value or no value” 语义,这使应用程序更加安全,而无需付出包装器的代价,例如 Optional
。(Kotlin 允许使用具有空值的函数构造。请参见 Kotlin 空安全的综合指南。)
尽管 Java 无法让您在类型系统中表达空安全,但 Spring Framework 通过在 org.springframework.lang
包中声明的工具友好型注解提供了 null-safety of the whole Spring Framework API。默认情况下,Kotlin 中使用的 Java API 的类型都被视为 平台类型,对它们的空值检查是宽松的。https://kotlinlang.org/docs/java-interop.html#jsr-305-support[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 NULL 安全性,该 NULL 安全性是从 Spring API 推断的 Kotlin 类型,但应注意,Spring API NULL 安全性声明甚至在次版本之间也可能会发生变化,将来可能会添加更多检查。
尚不支持泛型类型参数、变长参数和数组元素空值性,但应该在即将发布的版本中支持这些功能。有关最新信息,请参见 此讨论。 |