Kotlin 的主要特性之一是空安全, 它干净利落地处理编译时的值,而不是在运行时撞到著名的值。这通过可为空性使应用程序更安全 声明和表达“有值或无值”的语义,而无需支付包装器的成本,例如 . (Kotlin 允许使用具有可为 null 值的函数结构。请参阅此 Kotlin 空安全综合指南nullNullPointerExceptionOptional

尽管 Java 不允许您在其类型系统中表达 null-safety,但 Spring 框架 通过包中声明的工具友好注释提供整个 Spring Framework API 的空安全性。 默认情况下,Kotlin 中使用的 Java API 中的类型被识别为平台类型, 对于其中,空检查被放宽。Kotlin 对 JSR-305 注解和 Spring 可空性注解的支持为 Kotlin 开发人员提供了整个 Spring Framework API 的空安全性, 具有在编译时处理相关问题的优点。org.springframework.langnull

Reactor 或 Spring Data 等库提供 null 安全 API 来利用此功能。

您可以通过添加以下命令的编译器标志来配置 JSR-305 检查 选项:。-Xjsr305-Xjsr305={strict|warn|ignore}

对于 kotlin 版本 1.1+,默认行为与 相同。 该值是考虑 Spring Framework API 空安全性所必需的 在 Kotlin 类型中,从 Spring API 推断出来,但应该在知道 Spring 的情况下使用 即使在次要版本之间,API 可空性声明也可能发生变化,并且可能会进行更多检查 将来添加。-Xjsr305=warnstrict

尚不支持泛型类型参数、varargs 和数组元素的可空性, 但应该在即将发布的版本中。有关最新信息,请参阅此讨论