Java或Apache Commons中是否存在varargs null检查功能?
-
03-07-2019 - |
题
我有四个变量,我想检查其中任何一个是否为空。我能做到
if (null == a || null == b || null == c || null == d) {
...
}
但我真正想要的是
if (anyNull(a, b, c, d)) {
...
}
但我不想自己写。这个函数是否存在于任何常见的Java库中?我检查了Commons Lang并没有看到它。它应该使用varargs来获取任意数量的参数。
解决方案
我认为你能用Java库做的最好的事情是:
if (asList(a, b, c, d).contains(null)) {
其他提示
我不知道它是否属于公地,但写作需要大约十秒钟:
public static boolean anyNull(Object... objs) {
for (Object obj : objs)
if (obj == null)
return true;
return false;
}
你在评论中询问放置静态助手的位置,我建议
public class All {
public static final boolean notNull(Object... all) { ... }
}
然后使用限定名称进行通话,例如
assert All.notNull(a, b, c, d);
可以使用类 Any
和 isNull
之类的方法完成相同的操作。
在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)) { ... }
不隶属于 StackOverflow