Java自动拆箱可能导致 NullPointerException

例子

此代码编译:

Integer arg = null;
int x = arg;

但它会在运行时崩溃,java.lang.NullPointerException第二行有一个。

问题是原语int不能有null值。

这是一个极简的例子,但在实践中它经常以更复杂的形式表现出来。这NullPointerException不是很直观,通常对定位此类错误几乎没有帮助。

小心依赖自动装箱和自动拆箱,确保未装箱的null值在运行时没有值。