前言
有次调用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.
原文地址:https://www.cnblogs.com/jianpanaq/p/12322947.html
时间: 2024-11-12 15:08:59