¿Existe una función de comprobación nula de varargs en Java o Apache Commons?
-
03-07-2019 - |
Pregunta
Tengo cuatro variables y quiero comprobar si alguna de ellas es nula. Puedo hacer
if (null == a || null == b || null == c || null == d) {
...
}
pero lo que realmente quiero es
if (anyNull(a, b, c, d)) {
...
}
pero no quiero escribirlo yo mismo. ¿Existe esta función en alguna biblioteca común de Java? Revisé Commons Lang y no lo vi. Debería usar varargs para tomar cualquier número de argumentos.
Solución
Lo mejor que puedes hacer con la biblioteca de Java es, creo:
if (asList(a, b, c, d).contains(null)) {
Otros consejos
No sé si está en los comunes, pero tarda unos diez segundos en escribir:
public static boolean anyNull(Object... objs) {
for (Object obj : objs)
if (obj == null)
return true;
return false;
}
Usted preguntó en los comentarios dónde colocar el ayudante estático, sugiero
public class All {
public static final boolean notNull(Object... all) { ... }
}
y luego use el nombre calificado para la llamada, como
assert All.notNull(a, b, c, d);
Lo mismo se puede hacer con una clase Cualquiera
y métodos como isNull
.
En Java 8 puedes hacerlo de una manera aún más elegante:
if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }
o puedes extraerlo a un método:
public static boolean anyNull(Object... objects) {
return Stream.of(objects).anyMatch(Objects::isNull);
}
y luego úsalo en tu código como este:
if (anyNull(a, b, c, d)) { ... }