10

我有四个变量,我想检查其中任何一个是否为空。我可以

if (null == a || null == b || null == c || null == d) {
    ...
}

但我真正想要的是

if (anyNull(a, b, c, d)) {
    ...
}

但我不想自己写。这个函数是否存在于任何常见的 Java 库中?我检查了 Commons Lang 并没有看到它。它应该使用可变参数来接受任意数量的参数。

4

4 回答 4

19

不知道是不是公用的,但是大概需要十秒的时间来写:

public static boolean anyNull(Object... objs) {
    for (Object obj : objs)
        if (obj == null)
            return true;
    return false;
}
于 2009-03-04T21:30:28.730 回答
10

我认为使用 Java 库可以做的最好的事情是:

if (asList(a, b, c, d).contains(null)) {
于 2009-03-04T21:32:59.850 回答
4

您在评论中询问将静态助手放在哪里,我建议

public class All {
    public static final boolean notNull(Object... all) { ... }
}

然后使用限定名进行调用,如

assert All.notNull(a, b, c, d);

然后可以使用类Any和方法(如isNull.

于 2009-03-07T23:55:37.423 回答
2

在 Java 8 中,你可以用更优雅的方式做到这一点:

if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }

或者您可以将其提取到一个方法中:

public static boolean anyNull(Object... objects) {
    return Stream.of(objects).anyMatch(Objects::isNull);
}

然后在你的代码中使用它,如下所示:

if (anyNull(a, b, c, d)) { ... }
于 2016-09-14T12:11:46.713 回答