- 空值标记 用于标记代码中的变量、参数、方法或类是否可以为null。它本身并不能校验空值,而是提供了一种编译时检查的机制,可以在代码编译时检测到可能存在的空指针异常,并在代码编写期间高亮警告。可以帮助开发人员更早地发现潜在的空指针异常问题
- Spring 中有以下空值标记注解,注解均无参数
校验注解 |
说明 |
@NonNull |
指示的目标对象不能为 null,用于注解方法,参数以及变量。 如果为 null 则会抛出 NullPointerException 异常。 |
@NonNullApi |
指定的参数和方法返回值默认不能为 null,用于包(Package)级别注解 在文件 package-info.java 中使用 |
@NonNullFields |
指示的变量不能为 null,用于包(Package)级别注解 在文件 package-info.java 中使用 |
@Nullable |
指示的目标对象可以为 null,可用于注解方法,参数以及变量 。 若是与 @NonNullApi 和 @NonNullFields 共用,会被覆盖 |
示例
public class User(){
//标记属性不可以为空
@NonNull
private String name;
//标记参数不可以为 null
public boolean isBlank(@NonNull String name){
return name
== null;
}
//标记返回值不可以为 null
@NonNull
public String getName(){
return name;
}
}
示例
public class User(){
//标记属性不可以为空
@Nullable
private String name;
//标记参数不可以为 null
public boolean isBlank(@Nullable String name){
return name
== null;
}
//标记返回值不可以为 null
@Nullable
public String getName(){
return name;
}
}
- 使用 @NonNullApi 和 @NonNullFields 注解,首先需要新建文件(文件名package-info.java)
示例
//参数和方法返回值默认不能为 null
@NonNullApi
//所有变量不能为 null
@NonNullFields
package sfw.xumt.springdemo;
import org.springframework.lang.NonNullApi;
import org.springframework.lang.NonNullFields;