当我调用这样的方法时:
int value1;
Integer value2 = null;
setValue(value2);
private void setValue(int value) {
value1 = value;
}
为什么有一个NullPointerException
?
当前答案中未提及的情况是形参类型是否为原始类型:
void setValue(int a) {
// ...
}
这可以使用参数调用null
,因为编译器将尝试自动拆箱该值。有效:
setValue(null);
将被调用为:
setValue(((Integer) null).intValue());
但是,对于 NPE,这将始终失败,因为您无法取消引用空值。
但请注意,NPE 不会因为null
传递给方法而发生,而是因为传递的值是如何计算的。区别很微妙,但很重要。
任何值得使用的 IDE 都应该将此标记为问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句