空安全
尽管Java不允许您通过其类型系统表达空安全性,但Spring Framework在org.springframework.lang
包中提供以下注解,让您可以声明API和字段的可空性:
-
@Nullable
:用于指示特定参数、返回值或字段可以为null
的注解。 -
@NonNull
:用于指示特定参数、返回值或字段不能为空(在参数、返回值和字段分别适用@NonNullApi
和@NonNullFields
的情况下不需要)的注解。 -
@NonNullApi
:在包级别声明参数和返回值的默认语义为非空的注解。 -
@NonNullFields
:在包级别声明字段的默认语义为非空的注解。
Spring Framework本身利用这些注解,但它们也可以在任何基于Spring的Java项目中使用,以声明空安全的API和可选的空安全字段。目前不支持泛型类型参数、可变参数和数组元素的空性声明。空性声明预计会在Spring Framework的发布中进行微调,包括次要版本。方法体内部使用的类型的空性不在此功能的范围之内。
其他常见库,如Reactor和Spring Data,提供使用类似空性安排的空安全API,为Spring应用程序开发人员提供一致的整体体验。 |
使用案例
除了为Spring Framework API的空性提供显式声明外,这些注解还可以被IDE(如IDEA或Eclipse)使用,以提供与空安全相关的有用警告,以避免运行时的NullPointerException
。
它们还用于使Kotlin项目中的Spring API具有空安全性,因为Kotlin本身支持空安全。更多详细信息请参阅Kotlin支持文档。