根据Java语言规范,拆箱是通过调用
Number.longValue(),
Number.intValue()等进行的。没有特殊的字节码魔术发生,这与您手动调用这些方法完全相同。因此,这
NullPointerException是将a拆箱的自然结果
null(实际上是JLS要求的)。
引发不同的异常将需要在每次拆箱转换期间检查
null两次
(一次以确定是否引发特殊异常,而在实际调用该方法时隐式地进行一次检查)。我想语言设计者认为它没有足够的用处。

根据Java语言规范,拆箱是通过调用
Number.longValue(),
Number.intValue()等进行的。没有特殊的字节码魔术发生,这与您手动调用这些方法完全相同。因此,这
NullPointerException是将a拆箱的自然结果
null(实际上是JLS要求的)。
引发不同的异常将需要在每次拆箱转换期间检查
null两次