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)) { ... }