自动取消装箱可能会导致 NullPointerException

此代码编译:

Integer arg = null;
int x = arg;

但它会在运行时因第二行的 java.lang.NullPointerException 而崩溃。

问题是原始 int 不能具有 null 值。

这是一个简约的例子,但在实践中,它通常表现为更复杂的形式。NullPointerException 不是非常直观,通常在查找这些错误方面帮助不大。

依靠自动装箱和自动拆箱,确保未装箱的值在运行时不会有 null 值。