0

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

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

调用:

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

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

4

2 回答 2

5

在这种情况下,JVM 内部抛出 aNullPointerException因为无法将 a 转换Integer iint i. 在这种情况下Integer,它当然对原始数据类型null无效。 int

根据规范,这不是允许的转换,并在Java 1.5 指南中注明。

于 2012-08-17T23:36:49.173 回答
1

JVM 尝试将 null 自动装箱为 int 并因 NPE 而失败。

于 2012-08-17T23:39:44.903 回答