用于比较的Java布尔类变量

时间:2015-07-10 19:03:45

标签: java

我有

Boolean condition;

public Boolean isCondition() { return condition; }

然后允许使用此方法的以下用法,如原语

if (isCondition())
{
  //...
}

我会将它用于原语但不确定该类。是否需要检查NULL?我需要首先使用getBooleanValue()吗?

3 个答案:

答案 0 :(得分:7)

是的,你可以使用任何盒装基元(在你的情况下,Boolean)作为基元本身;也就是说,如果您可以保证condition设置为非空值,那么您的示例将起作用。

这里需要注意的是,如果任何盒装基元本身在取消装箱时为nullyou will get a NullPointerException。如果您有可能将该值设为null,则应首先重新评估为何使用盒装基元。最好使用未装箱的原语(在您的情况下为boolean)。

答案 1 :(得分:2)

是的,需要针对null进行检查,因为它是引用类型。原始类型boolean的自动拆箱(在if条件下完成)依赖于调用Boolean#booleanValue(),如果condition变量为{{null,则会抛出NPE 1}}。

答案 2 :(得分:0)

我找到了一个简单的解决方案,

{{1}}

这永远不会抛出NPE,因为表达式在右侧,我们仍然可以比较它。