java记录一次调用方法出现的NullPointerException

Posted 键盘AQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java记录一次调用方法出现的NullPointerException相关的知识,希望对你有一定的参考价值。

前言

有次调用java api,报错

Caused by: java.lang.NullPointerException: null
	at com.winning.dataassets.system.util.AppSystemMenuHelper.lambda$systemAddMultiMenu$0(AppSystemMenuHelper.java:54)
	at java.util.ArrayList.forEach(ArrayList.java:1257)                                                                                

很奇怪,没有对象是空的的啊,我只不过调取了另一个方法而已,怎么就报空指针异常了呢,

初级程序员的排查:

1.可能是lambda的原因,因为这个异常不是有个lambda的异常信息在吗。

2.可能是lombok的原因,最近一直看lombok会出现各种各样的问题,不建议使用。

3.可能是spring注解@Component的影响。

 

后来发现,方法体留空,还是没进入方法内,在排查,入参有个null,难道会是这个,但是之前调取JPA方法入参传递null就没关系,试着修改这个null为固定一个值,可以了。

 

再仔细排查,原来是因为包装型和基本型的区别。

第一个方法入参:

public List<AppSystemMenuEntity> systemAddMultiMenu(Long appSystemId,  Long parentMenuId, long appMenuId) {     
getAppSystemMenuEntity(appSystemId,parentMenuId,appMenuId);
}

第二个方法入参:

    private AppSystemMenuEntity getAppSystemMenuEntity(long appSystemId, long parentMenuId, long appMenuId) {

    }  

因为第一个方法入参是Long类型,包装型类型允许null和数字,但是基本型long不允许null,所以就报了空指针异常。

看来还是基础知识太差了,要好好学习,天天向上,stay hungry, stay foolish.

 

以上是关于java记录一次调用方法出现的NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

Java中String字符串toString()String.valueOf()String强转+ ""的区别

使用 DBUnit 配置单一测试时,我的通用 Dao 中出现“java.lang.NullPointerException”错误 [重复]

Java代码块

剑指Offer-54.字符流中第一个不重复的字符(C++/Java)

工作经验:Java 系统记录调用日志,并且记录错误堆栈

生产环境一次诡异的空指针问题,竟然反转了4次