非空注解@NonNull与@NotNull使用错误导致传参为空时报NPE

简介: 非空注解@NonNull与@NotNull使用错误导致传参为空时报NPE

背景

新上线了一个需求后,发现时不时的有一些NullPointerException报出来,跟踪后发现都是在一个地方报出来的


org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.lingyejun.mall.domain.book.req.BookInfoReqDto]: Constructor threw exception; nested exception is java.lang.NullPointerException: bookId


根据错误的堆栈信息,找到对应的类,第一眼没有返现什么问题,但是错误是由于构造方法内部报出来的,所以我们查看编译后的.class文件,发现这个类的构造方法,居然是参数为空就直接抛出


NullPointerException


public BookInfoReqDto(@NonNull Long bookId){
    if(bookId == null){
        throw new NullPointerException("bookId");
    }else {
        this.bookId = bookId;
    }
}


原来是有人用错注解了


@NonNull使用错注解了,应该用@NotNull,注意二者所源自的包是不同的。


import lombok.NonNull;import javax.validation.constraints.NotNull;


本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


目录
相关文章
|
SQL
SpringCloud - Feign调用返回对象不为null,但属性全为null
SpringCloud - Feign调用返回对象不为null,但属性全为null
1302 0
|
8月前
判断Object对象是否为空
判断Object对象是否为空
|
2月前
|
算法 前端开发 索引
判断对象是否为空
判断对象是否为空
28 0
|
2月前
|
Python
基于 Validator 类实现 ParamValidator,用于校验函数参数
基于 Validator 类实现 ParamValidator,用于校验函数参数
36 0
|
Java Spring
自定义注解判断参数为空
使用Spring的 @Valid和@Validated不好嘛,干嘛要自己造轮子呢.......
|
前端开发
你真的会判断对象是否为空吗?
一个小小的判空,却很可能让你吃了大亏,如果一个判空没有做好,那么里面的逻辑就完全裸露了,相信你一定吃过 `NullPointerException` 的苦头!
|
数据库
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
275 1
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
检查对象是否为空
检查对象是否为空
75 0
|
SQL 缓存 监控
面试题:对NotNull字段插入Null值 有啥现象?
今天我要跟你分享的话题是:“对NotNull字段插入Null值有啥现象?”
140 0