Java或Apache Commons中是否有varargs null检查函数?

Java或Apache Commons中是否有varargs null检查函数?,java,validation,null,variadic-functions,Java,Validation,Null,Variadic Functions,我有四个变量,我想检查其中是否有一个是空的。我能行 if (null == a || null == b || null == c || null == d) { ... } 但我真正想要的是 if (anyNull(a, b, c, d)) { ... } 但我不想自己写。该函数是否存在于任何公共Java库中?我查看了Commons Lang,没有看到它。它应该使用varargs来获取任意数量的参数。我不知道它是否在commons中,但它大约需要10秒钟来编写: publi

我有四个变量,我想检查其中是否有一个是空的。我能行

if (null == a || null == b || null == c || null == d) {
    ...
}
但我真正想要的是

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

但我不想自己写。该函数是否存在于任何公共Java库中?我查看了Commons Lang,没有看到它。它应该使用varargs来获取任意数量的参数。

我不知道它是否在commons中,但它大约需要10秒钟来编写:

public static boolean anyNull(Object... objs) {
    for (Object obj : objs)
        if (obj == null)
            return true;
    return false;
}

我认为,使用Java库所能做的最好的事情是:

if (asList(a, b, c, d).contains(null)) {

我建议您在评论中询问将静态助手放置在何处

public class All {
    public static final boolean notNull(Object... all) { ... }
}
然后为调用使用限定名称,例如

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

在Java 8中,类
Any
和类似
isNull

的方法也可以做到这一点,您可以用更优雅的方式来实现:

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

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


我猜,静态导入java.util.Arrays.asList后,接近读写编程的速度也会稍微慢一些,但是没有外部库,也不知道将anyNull方法放在哪里。它还可以用作:if(List.of(a,b,c,d).contains(null))。但请注意,ImmutableCollections的实例将created@DiegoSouza数组被复制了,但最大的问题是
List.of(a,b,c,d).contains(null)
永远不会保留false-它会保留NPE。我只是做了一些调查,发现了一些anyNull方法,但它们似乎早于varargs,我试着搜索googlecode(),但我不确定该如何定义搜索。代码的基本结构看起来像这样,但名称几乎可以是任何东西。
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)) { ... }