【发布时间】:2013-06-04 01:52:00
【问题描述】:
我编写了导致 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更改为false?? -
使用
boolean而不是Boolean来避免许多NullPointerExceptions -
@TheNewIdiot 这对这种情况没有影响
-
可能是
null.booleanValue()抛出了NPE。 -
@TheNewIdiot 我希望有可能在布尔值中包含三个值:true、false 和 null 用于错误检测。