布尔值!= false

Bar*_*lom 33 java autoboxing boolean

在Java中,你通常会说

if(someBool != false)

是相同的

if(someBool)

但是,如果someBool不是类型,booleanBoolean它的价值是null什么?

Mic*_*rdt 114

如果要处理Boolean实例和基元并且是空安全的,可以使用:

if(Boolean.TRUE.equals(someBool))
Run Code Online (Sandbox Code Playgroud)

  • @Jesper:不.`!Boolean.FALSE.equals(null)`返回`true`,而`Boolean.TRUE.equals(null)`返回`false`.然而,这确实很好地证明了双重否定很难在心理上进行解析,因此可以更好地避免. (8认同)
  • 或者如果你想在someBool为'null`时做某事,`!Boolean.FALSE.equals(someBool)` (2认同)

Boz*_*zho 48

它会抛出一个NullPointerException(autounboxingnull抛出NPE).

但这只意味着你不能允许一个null值.使用默认值,或者不使用自动装箱并进行非空检查.因为使用null布尔值意味着您有3个而不是2个值.(Michael和Tobiask提出了更好的处理方法)


Tob*_*ias 21

使用ApacheCommons BooleanUtils.isTrue()或.isFalse()