Gibt es eine varargs null Prüffunktion in Java oder Apache Commons?
-
03-07-2019 - |
Frage
Ich habe vier Variablen, und ich möchte überprüfen, ob einer von ihnen null ist. Ich kann tun,
if (null == a || null == b || null == c || null == d) {
...
}
, aber was ich wirklich will, ist
if (anyNull(a, b, c, d)) {
...
}
, aber ich will nicht, es selbst zu schreiben. Gibt es diese Funktion in allen gängigen Java-Bibliothek? Ich habe Commons Lang und habe es nicht gesehen. Es sollte varargs verwenden beliebige Anzahl von Argumenten zu übernehmen.
Lösung
Das Beste, was Sie mit der Java-Bibliothek ist zu tun, denke ich:
if (asList(a, b, c, d).contains(null)) {
Andere Tipps
Ich weiß nicht, ob es in commons, aber es dauert etwa 10 Sekunden zu schreiben:
public static boolean anyNull(Object... objs) {
for (Object obj : objs)
if (obj == null)
return true;
return false;
}
Sie haben gefragt, in den Kommentaren, wo die statischen Helfer zu setzen, schlage ich vor,
public class All {
public static final boolean notNull(Object... all) { ... }
}
und verwenden Sie dann den qualifizierten Namen für Anruf, wie
assert All.notNull(a, b, c, d);
Das gleiche kann dann mit einer Klasse Any
und Methoden wie isNull
erfolgen.
In Java 8 können Sie es tun in noch eleganter Art und Weise:
if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }
oder Sie können es auf ein Verfahren extrahieren:
public static boolean anyNull(Object... objects) {
return Stream.of(objects).anyMatch(Objects::isNull);
}
und verwenden Sie es dann in Ihrem Code wie folgt aus:
if (anyNull(a, b, c, d)) { ... }