为什么我在调用此方法时遇到NullPointerException?

时间:2012-08-17 23:35:42

标签: java nullpointerexception

我在当前对象上有一个带参数的方法。调用该方法会引发NullPointerException,即使this 按定义也不能是null

private String doSomething(int i){
   return "I";
}

调用:

Integer i = null;
String s = this.doSomething(i);

如果我没有引用NullPointerException对象,为什么会有null

2 个答案:

答案 0 :(得分:5)

在这种情况下,由于无法将NullPointerException转换为Integer i,JVM内部会抛出int i。在这种情况下,Integernull,这当然对primitive data type int无效。

根据specification,这不是允许的转化,并在the guide for Java 1.5中注明。

答案 1 :(得分:1)

JVM尝试将null自动装箱到int并使用NPE失败。