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