java - 根据原始值检查空包装器

标签 java expression wrapper boxing

Integer i = null;
if (i == 3)

为什么上面的第二行抛出一个 NullPointerException,恕我直言,这只有一个含义,即包装对象 i 将被拆箱,从而产生异常,例如:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(null);
int x = list.get(0);

编辑:你能为我提供一些格式文档吗?

最佳答案

它会抛出 NPE,因为编译器会为您执行以下“魔法”:

Integer i = null;
if (i.intValue() == 3)

显然,当 inull 时,i.intValue() 会抛出 NPE。

关于java - 根据原始值检查空包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177585/

相关文章:

c - 为什么在 C 中 const 对象不是编译时常量表达式?

python - 从库返回的 ctypes 结构

c++ - 如何为 delete 编写一个 C 包装器,它可以快速释放任何给它的类型而不告诉它是什么类型

java - undefined symbol : _ZTTN2cv4SURFE

java.sql.SQLException : No suitable driver found for jdbc:mysql://localhost/WORLD

java - ISIS:附件收集问题(Blob,Clob)

java - 字符串比较奇怪的bug

c++ - 复合表达式与表达式与子表达式

c++ - 语义向二进制表达式 ('double' 和 'double' 发出无效操作数)

python - 将 `defaultdict` 公开为常规 `dict`