采用varargs的方法的多个null参数会导致空指针异常

时间:2015-06-09 08:44:47

标签: java nullpointerexception

当我运行它时,我遇到了一个空指针异常:

--basedir=

堆栈跟踪: 线程“main”java.lang.NullPointerException中的异常     在com.mypackage.test.main(test.java:10)

为什么在此行抛出空指针:     长c =总和(a,b);

1 个答案:

答案 0 :(得分:-1)

由于您的方法sum(final long... values)使用了基元,因此当nullLong value1 = 1L; Long value2 = 2.0L; sum(value1, value2); // value1 and value2 will be unboxed from Long to long, // and then used in the method 时,您不能简单地将Long值放在方法中。

对于有效的长值,会发生这种情况:

Long value1 = null;
Long value2 = null;
sum(value1, value2);     // value1 and value2 will be unboxed from Long to long,
                             // giving an error because they are null, which is not a valid primitive value

对于无效的长值,会发生这种情况:

Long value1 = null;
Long value2 = null;
if(value1 == null || value2 == null) return; // or something else like continue, logging, etc.
sum(value1, value2);

尝试这样的事情:

null

或者,如果您仍想将值相加并将0计为Long value1 = null; Long value2 = null; value1 = value1 != null ? value1 : 0L; value2 = value2 != null ? value2 : 0L; sum(value1, value2); ,请使用此选项:

sum

或者,将Long方法的参数类型更改为long而不是<button onClick="reply_click(this)">Show</button> <script> function reply_click(e) { $(e).next("h4").toggle("slow"); } </script> ,并在方法中执行这两项检查之一。