Spring的@NonNull
spring 的 @Nonnull 一般是加在类的属性上,然后在作为形参时使用 @Validated 进行校验。
今天在代码里看到了将 @NonNull 放在方法的形参上,下面测试 spring 的@NonNull 放在形参上的效果
public class NonNULLTest {
public void fun(@NonNull String name, Integer age) {
System.out.println(name);
System.out.println(age);
}
@Test
public void main() {
this.fun(null, 18);
}
}
结果:
可以看到 spring 的 @NonNull 并没有对参数进行非空校验,只是在调用该方法的时候会产生语法提示
Lombok的@NonNull
下面看看 lombok 里的 @NonNull 效果。代码一样,只是 @NonNull 不一样,运行结果:
可以看到 lombok 的 @NonNull 会对参数进行非空校验并抛出异常,而且会产生语法提示
检查 target 中编译好的 class 文件后发现 @NonNull 给代码添加了非空判断
总结
spring 的 @NonNull:作用在形参上只是标记该参数不能为空,实际不会进行校验只是提示
lombok 的 @NonNull:会在编译时对标记了 @NonNull 的参数生成非空判断的代码,若传入空参会报异常
|