我有以下代码:
Boolean bool = null; try { if (bool) { //DoSomething } } catch (Exception e) { System.out.println(e.getMessage()); }
为什么我对布尔变量“bool”的检查会导致异常?当它“看到”它不是真的时,它不应该直接跳过 if 语句吗? 当我删除 if 语句或检查它是否为空时,异常消失了。
当您有 aboolean时,它可以是true或false。但是,当您拥有 a 时Boolean,它可以是Boolean.TRUE,Boolean.FALSE也可以是null任何其他对象。
boolean
true
false
Boolean
Boolean.TRUE
Boolean.FALSE
null
在您的特定情况下,您的Booleanisnull和if语句会触发隐式转换,boolean从而产生NullPointerException. 您可能需要:
if
NullPointerException
if(bool != null && bool) { ... }