空安全

Kotlin的一个关键特性是空安全,它在编译时清晰地处理null值,而不是在运行时遇到著名的NullPointerException。通过空值声明和表达“有值或无值”的语义,使应用程序更安全,而无需支付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值要求在Kotlin类型中从Spring API推断出Spring Framework API的空安全,但应该在了解Spring API空值声明可能在次要版本之间发生变化并且将来可能添加更多检查的情况下使用。

目前不支持泛型类型参数、可变参数和数组元素的空值性,但应该在即将发布的版本中支持。请参阅此讨论获取最新信息。