考虑成员变量:
String foo;
如果先前未设置setFoo
或当前为空,我只想致电foo
。
为此目的,我不确定这是否足够:
if(foo==null || foo.isEmpty()) {
setFoo(foo);
}
或者在OR条件的另一侧检查null是否更安全:
if(foo==null || (foo!=null && foo.isEmpty())) {
setFoo(foo);
}
答案 0 :(得分:11)
if(foo==null || foo.isEmpty())
就足够了。
在Logical OR条件下,如果第一部分为false,Java将仅评估第二部分。
答案 1 :(得分:3)
不,第一个片段没问题。
在Java(以及许多类似的语言,如C或C ++)中,逻辑运算符&&
和||
执行短路评估。在||
的情况下,如果左侧操作数为true
,则不会评估右侧操作数。
答案 2 :(得分:1)
欢迎使用Stack Overflow
Java中的||
,&&
等运营商是短路运营商,
只有当第一部分不足以确定值
所以,if(foo==null || foo.isEmpty())
就足够了。
答案 3 :(得分:0)
if (foo == null || foo.isEmpty()) setFoo(foo);
工作正常。在这种情况下,如果foo
为空,则会调用setFoo(foo)
。如果foo
不为空且foo
为空,则也会调用setFoo(foo)
。
答案 4 :(得分:0)
我发现使用StringUtils.isBlank(foo)
(来自apache commons-lang)更优雅,所以你不需要||一点都不。