26 在Java中: int count = (Integer) null; 引发java.lang.NullPointerException。 为什么这样不抛出Class Cast Exception以便于程序员理解? 为什么选择此例外而不是其他任何例外? java language-design — 内森·R source
46 执行代码时,Java运行时将执行以下操作: 将null转换为Integer类的对象。 尝试通过调用方法intValue()将Integer对象拆箱为int 在null对象上调用方法将引发NullPointerException。 换句话说,可以将null强制转换为Integer,而不会出现问题,但是不能将null整数对象转换为int类型的值。 编辑 不久前,我在Stack Overflow遇到了一个相关问题,请参阅此处。 — 乔治 source
1 Java成功将null转换为不引用任何对象的Integer引用。 可以,因为未经验证是供参考的有效状态。 这是无法执行的不存在对象的方法的调用。 执行强制转换(Integer)null与声明Integer变量,然后未能为其分配新的(或已经存在的)Integer对象实例相同。 — 图兰斯·科尔多瓦 source
-1 将a拆箱Integer到intie in中int i = new Integer(15);,i实际上等于new Integer(15).intValue() i = (Integer) o; 其中Object o = 15相同o = Integer.valueOf(15);但i = null; 抛出NullPointerException,因为i那么平等 null.intValue()会抛出一个NullPointerException。 — Java神童 source 2 大约两年前接受的答案提供了几乎相同的解释,但更为明确。对于Java 5+,此答案也不正确:现在使用valueOf()工厂方法,而不是为装箱创建新实例。
valueOf()
工厂方法,而不是为装箱创建新实例。