我研究了Java 14中有用的NullPointerExceptions,并测试了不同的场景.令人惊讶的是,在某些场景中,取消装箱似乎会导致Helfpul NPE,而其他场景不包含任何错误消息:
// NPE with message 'Cannot invoke "java.lang.Integer.intValue()" because "index" is null'
Integer index = null;
int i = index;
// NPE with message null
List.of('a', 'b', 'c').indexOf(index);
我想知道,为什么第二个例子没有产生与第一个相同的信息.我阅读了JEP 358,了解到消息是根据字节码指令进行计算的.这两个场景有什么不同吗?我以为这两个偷偷摸摸的人都会调用Integer.intValue()来打开值的包装箱.
(使用Oracle JDK 17.0.4.1进行测试)