4

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

我检查其中一个是否是nullthen return false

所以我这样做:

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

有什么捷径吗?

(我开始学习java)

4

5 回答 5

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;
}

如果您不知道数组for-each循环是什么,请查看以下内容:

于 2012-12-25T03:04:02.933 回答
3

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

于 2012-12-25T02:56:30.670 回答
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.
于 2012-12-25T03:16:37.850 回答
0

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

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

于 2012-12-25T02:57:31.320 回答
0

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

于 2012-12-25T04:31:02.600 回答