Pergunta

Eu tenho quatro variáveis ??e quero verificar se qualquer um deles é nulo. Eu posso fazer

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

mas o que eu realmente quero é

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

mas eu não quero escrever-me. Será que isso existe a função em qualquer biblioteca Java comum? Eu verifiquei Commons Lang e não vê-lo. Deve usar varargs tomar qualquer número de argumentos.

Foi útil?

Solução

O melhor que você pode fazer com a biblioteca Java é, eu penso:

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

Outras dicas

Eu não sei se ele está em commons, mas leva cerca de dez segundos para escrever:

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

Você perguntou nos comentários onde colocar o auxiliar estática, sugiro

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

e, em seguida, usar o nome qualificado para a chamada, como

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

O mesmo pode ser feito com um Any classe e métodos como isNull.

Em Java 8 você pode fazê-lo de maneira ainda mais elegante:

if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }

ou você pode extraí-lo para um método:

public static boolean anyNull(Object... objects) {
    return Stream.of(objects).anyMatch(Objects::isNull);
}

e, em seguida, usá-lo em seu código como este:

if (anyNull(a, b, c, d)) { ... }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top