Esiste una funzione di controllo null varargs in Java o Apache Commons?
-
03-07-2019 - |
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.
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)) { ... }