我在当前对象上有一个接受参数的方法。 调用该方法会抛出NullPointerException
,即使根据定义this
不得null
。
private String doSomething(int i){
return "I";
}
调用:
Integer i = null;
String s = this.doSomething(i);
如果我不引用null
对象,为什么会有NullPointerException
?
在这种情况下
,JVM内部由于无法将Integer i
转换为int i
而抛出NullPointerException
。 在这种情况下,Integer
是null
,这当然对原始数据类型int
无效。
根据规范,这不是允许的转换,并在 Java 1.5 指南中注明。
JVM尝试将null自动框为int,但失败了NPE。