java - 为什么 NullPointerException 在 short IF 中发生

标签 java nullpointerexception

<分区>

我编写了导致 NullPointerException 异常的简短 Java 代码。有人对此有解释吗?代码:

int val = 2;
Boolean result = (val == 0) ? false : ((val == 1) ? true : null);

以下(简化版)代码也会导致 NullPointerException:

Object result = (false) ? false : (false ? true : null);

但是这个:

int val = 2;
Boolean result = (val == 0) ? Boolean.FALSE : ((val == 1) ? true : null);

还有这个:

Object result = (false) ? Boolean.FALSE : (false ? true : null);

或者这个:

Object result = (false) ? (Boolean)false : (false ? true: null);

不是吗?

最佳答案

我认为发生的事情是 ((val == 1) ? true : null) 总是返回 null 然后它尝试将其拆箱到 boolean 值。这会导致空指针异常。

在我说完之后,@JonSkeet 将您的问题标记为重复,因为 NullPointerException in ternary expression with null Long那里的答案有更详细的解释。

关于java - 为什么 NullPointerException 在 short IF 中发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989473/

相关文章:

java - 更新到 BouncycaSTLe 版本 1.56 后出现证书问题

java - ANTLR4 动态 token 类型

java - BeanUtils 在 hashCode() 中抛出 NullPointerException

java - 关于空指针异常

java - DES解密: Given final block not properly padded

java - 使用手动下载的依赖项时出现 POM 错误

java - 每次在 Selenium 中更改电子邮件地址

java - ArrayList.add() 方法导致 NullPointerException

java - java.lang.NullPointerException 中出现错误

java - 为什么在 android 应用程序中解析 xml 时出现 nullpointerexception?