Domanda

Ho quattro variabili e voglio verificare se una di esse è nulla. Posso fare

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

ma quello che voglio davvero è

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

ma non voglio scriverlo da solo. Questa funzione esiste in qualsiasi libreria Java comune? Ho controllato Commons Lang e non l'ho visto. Dovrebbe usare varargs per accettare qualsiasi numero di argomenti.

È stato utile?

Soluzione

Il meglio che puoi fare con la libreria Java è, penso:

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

Altri suggerimenti

Non so se sia in comune, ma ci vogliono circa dieci secondi per scrivere:

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

Nei commenti hai chiesto dove mettere l'helper statico, suggerisco

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

e quindi utilizzare il nome qualificato per la chiamata, ad esempio

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

Lo stesso può essere fatto con una classe Any e metodi come isNull .

In Java 8 puoi farlo in modo ancora più elegante:

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

oppure puoi estrarlo in un metodo:

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

e quindi usalo nel tuo codice in questo modo:

if (anyNull(a, b, c, d)) { ... }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top