Есть ли в Java или Apache Commons функция проверки нуля varargs?
-
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)) { ... }