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.

原文地址:https://www.cnblogs.com/jianpanaq/p/12322947.html

时间: 2024-11-12 15:08:59

java记录一次调用方法出现的NullPointerException的相关文章

JAVA对存储过程的调用方法

博客分类: java java存储过程sql 一:Java如何实现对存储过程的调用:   A:不带输出参数的   ---------------不带输出参数的----------------------------------create procedure getsum@n int =0<--此处为参数-->asdeclare @sum int<--定义变量-->declare @i intset @sum=0set @i=0while @i<[email protecte

Java记录 -27- String的intern方法

String类的 intern()方法:(intern 拘留的意思) public String intern() 返回字符串对象的规范化表示形式. 一个初始为空的字符串池,它由类 String 私有地维护. 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串.否则,将此 String 对象添加到池中,并返回此 String 对象的引用. 它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s

java对过反射调用方法

  public class InvokeTester { public InvokeTester() { } String str; public InvokeTester(String str) { this.str = str; } public int add(int param1, int param2) { return param1 + param2; } public String echo(String msg) { return "echo: " + msg; }

Java记录 -40- 定义常量最佳方法

实际工作开发中,我们经常会使用到常量. 我们常用的常量,比如:public static final int AGE_OF_PERSON = 18; 常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可. 在Java中声明final常量时都会加上static关键字,这是为什么?既然是final的不可变的,那就没必要为该类的每个实例对象都声明一个该变量了,该类都使用唯一一个就可以了,这也符合常量的定义.static修饰则为该类所拥有,使用类名即可访问. 常量的作用:为了更

Java对存储过程的调用方法 --转载

一.Java如何实现对存储过程的调用: A:不带输出参数的 create procedure getsum @n int =0<--此处为参数--> as declare @sum int<--定义变量--> declare @i int set @sum=0 set @i=0 while @i<=@n begin set @sum=@sum+@i set @i=@i+1 end print 'the sum is '+ltrim(rtrim(str(@sum))) 在SQL

Java基础 throws 提示调用方法时要注意处理相关异常

????JDK :OpenJDK-11 ?????OS :CentOS 7.6.1810 ?????IDE :Eclipse 2019?03 typesetting :Markdown ? code package per.jizuiku.base; /** * @author 给最苦 * @date 2019/06/29 * @blog www.cnblogs.com/jizuiku */ class Demo { /** * @param args */ public static void

Java 面向对象 的属性 和 方法 的使用 (Java 学习中的小记录)

Java 面向对象 的属性  和 方法 的使用        作者:王可利(Star·星星) //car 的属性方法 class Car { //属性 格式:数据类型 变量名 String color; String name; int wheelNumber; public void run(){ System.out.println("run 的方法 汽车启动了~"); } } //主函数的方法 class Star1 { public static void main(Strin

java反射调用方法

1:Class类中的方法 public Method getDeclaredMethod(String name, Class<?>... parameterTypes) throws NoSuchMethodException, SecurityException 参数: name - 方法名 parameterTypes - 参数数组 返回: 该类与指定名和参数相匹配的方法的 Method 对象 2:Method类中的方法; public Object invoke(Object obj,

java native interface JNI 调用Java方法

在上一篇文章中介绍了JNI,以及java调用JNI,这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数.JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数. 下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数.每个函数接受(作为参数)域或方法的类,它们的名称,符号和它们对