我在当前对象上有一个带有参数的方法。调用该方法会抛出一个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 而失败。