2009-03-04 5 views
10

Tengo cuatro variables y quiero verificar si alguna de ellas es nula. Puedo hacer¿Hay una función de verificación nula varargs en Java o Apache Commons?

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

pero lo que realmente quiero es

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

pero no quiero escribir yo mismo. ¿Esta función existe en cualquier biblioteca común de Java? Revisé Commons Lang y no lo vi. Debe usar varargs para tomar cualquier cantidad de argumentos.

Respuesta

10

Lo mejor que puede hacer con la biblioteca de Java es, creo:

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

Con una importación estática de java.util.Arrays.asList, supongo? –

+0

Sí. Tienes que importarlo de alguna manera. Aunque es un poco engañoso ... –

+0

cerca de la programación alfabetizada – OscarRyz

18

No sé si es en bienes comunes, pero lleva unos diez segundos para escribir:

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

Sí, pero entonces la pregunta es dónde poner. ;) –

+1

¿Tiene alguna clase de utilidades de algún tipo? Parece que siempre termino con uno. –

+0

Sí, es Commons Lang, Commons IO, Commons Collections, etc ... –

4

pediste en los comentarios donde poner el ayudante estática, sugiero

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

y luego usar el nombre calificado de llamada, suc h como

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

misma, entonces se puede hacer con una clase Any y métodos como isNull.

+0

Me gusta mucho la idea. –

1

En Java 8 puede hacerlo de forma aún más elegante:

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

o puede extraerlo a un método:

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

y luego utilizarlo en su código como esto:

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