我在当前对象上有一个带参数的方法。调用该方法会引发NullPointerException
,即使this
按定义也不能是null
。
private String doSomething(int i){
return "I";
}
调用:
Integer i = null;
String s = this.doSomething(i);
如果我没有引用NullPointerException
对象,为什么会有null
?
答案 0 :(得分:5)
在这种情况下,由于无法将NullPointerException
转换为Integer i
,JVM内部会抛出int i
。在这种情况下,Integer
为null
,这当然对primitive data type int
无效。
根据specification,这不是允许的转化,并在the guide for Java 1.5中注明。
答案 1 :(得分:1)
JVM尝试将null自动装箱到int并使用NPE失败。