Existe uma varargs função de verificação nulo em Java ou Apache Commons?
-
03-07-2019 - |
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.
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)) { ... }