技术交流群:
Null-safety
尽管Java不允许你使用其类型系统来表示空安全性,但Spring框架现在在org.springframework.lang
包中提供了以下注解,以使你声明API和字段的空能力:
@Nullable
:指示特定参数,返回值或字段可以为null
的注解。@NonNull
: 指示特定参数,返回值或字段不能为null的注释(分别适用于@NonNullApi
和@NonNullFields
的参数/返回值和字段不需要)。@NonNullApi
:包级别的注解,它声明非null
作为参数和返回值的默认语义。@NonNullFields
: 程序包级别的注释,它声明非null
为字段的默认语义。
Spring框架本身利用了这些注解,但是它们也可以在任何基于Spring的Java项目去使用,以声明null
安全的API和可选的null
安全的字段。尚不支持泛型类型参数,varargs
和数组元素的可空性,但应在即将发布的版本中使用它们,有关最新信息,请参见SPR-15942。可空性声明预计将在Spring Framework版本之间进行微调,包括次要版本。在方法主体内部使用的类型的可空性超出了此功能的范围。
其他常见的库(如Reactor和Spring Data)提供了使用类似可空性设置的空安全API,从而为Spring应用程序开发人员提供了一致的总体体验。
7.1 使用场景
除了为Spring Framework API可空性提供显式声明外,IDE(例如IDEA或Eclipse)还可以使用这些注解提供与空安全有关的有用警告,以避免在运行时出现NullPointerException
。
由于Kotlin原生支持