我有
Boolean condition;
public Boolean isCondition() { return condition; }
然后允许使用此方法的以下用法,如原语
if (isCondition())
{
//...
}
我会将它用于原语但不确定该类。是否需要检查NULL?我需要首先使用getBooleanValue()吗?
答案 0 :(得分:7)
是的,你可以使用任何盒装基元(在你的情况下,Boolean
)作为基元本身;也就是说,如果您可以保证condition
设置为非空值,那么您的示例将起作用。
这里需要注意的是,如果任何盒装基元本身在取消装箱时为null
,you will get a NullPointerException
。如果您有可能将该值设为null
,则应首先重新评估为何使用盒装基元。最好使用未装箱的原语(在您的情况下为boolean
)。
答案 1 :(得分:2)
是的,需要针对null
进行检查,因为它是引用类型。原始类型boolean
的自动拆箱(在if
条件下完成)依赖于调用Boolean#booleanValue()
,如果condition
变量为{{null
,则会抛出NPE 1}}。
答案 2 :(得分:0)
我找到了一个简单的解决方案,
{{1}}
这永远不会抛出NPE,因为表达式在右侧,我们仍然可以比较它。