Есть ли в Java или Apache Commons функция проверки нуля varargs? - PullRequest
10 голосов
/ 05 марта 2009

У меня есть четыре переменные, и я хочу проверить, является ли любая из них нулевой. Я могу сделать

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

но я действительно хочу

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

но я не хочу писать это сам. Существует ли эта функция в какой-либо общей библиотеке Java? Я проверил Commons Lang и не увидел его. Он должен использовать varargs для получения любого количества аргументов.

Ответы [ 4 ]

19 голосов
/ 05 марта 2009

Я не знаю, записано ли оно в общем виде, но для записи требуется около десяти секунд:

public static boolean anyNull(Object... objs) {
    for (Object obj : objs)
        if (obj == null)
            return true;
    return false;
}
10 голосов
/ 05 марта 2009

Лучшее, что вы можете сделать с библиотекой Java, я думаю:

if (asList(a, b, c, d).contains(null)) {
4 голосов
/ 08 марта 2009

Вы спрашивали в комментариях, где поставить статический помощник, предлагаю

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

, а затем используйте полное имя для вызова, например

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

То же самое можно сделать с классом Any и такими методами, как isNull.

2 голосов
/ 14 сентября 2016

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