java中的短条件

时间:2012-12-25 02:54:24

标签: java

我有4个String个变量:a,b,c,d。

我检查其中一个是null然后是return false

所以我这样做:

if(a==null || b ==null || c ==null || d ==null) return false;

这有什么简短的方法吗?

(我是从java开始)

5 个答案:

答案 0 :(得分:4)

如果您的方法如下所示:

public boolean foo() {
    String a = "a", b = "b", c = "c", d = "d";
    if(a == null || b == null || c == null || d == null) {
        return false;
    }
    return true;
} 

然后有一种方法可以减少代码。你可以这样做:

public boolean foo() {
    String a = "a", b = "b", c = "c", d = "d";
    return (a != null || b != null || c != null || d != null);
}

但是,如果你有更多的字符串要测试,比如10,甚至100,那么需要更少代码的策略就是将字符串放入数组并使用 for-each 环。实际上,以下方法适用于任何类型的对象,而不仅仅是字符串

public boolean containsNullObject(Object... objs) {
    // loop through each string
    for(Object o : objs) {
        if(s == null) { return false; } // return false if string is null
    }
    // if there was no instance of a null object, return true
    return true;
}

如果您不知道每个循环的数组是什么,请查看以下内容:

答案 1 :(得分:3)

不,你的解决方案是最简单的。

答案 2 :(得分:1)

使用foreach循环和String vararg似乎可以更优雅地表达这一点。它会更好读,并允许您轻松调试您的陈述。

// method only returns true if all strings are non-null
public boolean all(String... strings) {
    for(String str : strings) {
        if(null == str) {
           return false;
        }
     }
     return true;
 }

然后你会以这种方式调用它:

return all(a, b, c, d); // will return false if any of these are null, otherwise true.

答案 3 :(得分:0)

- 您正在使用Non-Short circuit OR来评估条件,在这种情况下,我认为这是最简单和最简单的。

- 所以你的解决方案就是它所需要的。

答案 4 :(得分:0)

if在这里是多余的,只需使用return !(a == null || b == null || c == null || d == null);