Existe-t-il une fonction de contrôle null varargs en Java ou dans Apache Commons?
-
03-07-2019 - |
Question
J'ai quatre variables et je veux vérifier si l'une d'entre elles est nulle. Je peux faire
if (null == a || null == b || null == c || null == d) {
...
}
mais ce que je veux vraiment, c'est
if (anyNull(a, b, c, d)) {
...
}
mais je ne veux pas l'écrire moi-même. Cette fonction existe-t-elle dans une bibliothèque Java commune? J'ai vérifié Commons Lang et je ne l'ai pas vu. Il faut utiliser varargs pour prendre n'importe quel nombre d'arguments.
La solution
Le mieux que vous puissiez faire avec la bibliothèque Java est, je pense:
if (asList(a, b, c, d).contains(null)) {
Autres conseils
Je ne sais pas si c'est commun, mais cela prend environ dix secondes pour écrire:
public static boolean anyNull(Object... objs) {
for (Object obj : objs)
if (obj == null)
return true;
return false;
}
Vous avez demandé dans les commentaires où placer l'assistant statique, je suggère
public class All {
public static final boolean notNull(Object... all) { ... }
}
puis utilisez le nom qualifié pour l'appel, tel que
assert All.notNull(a, b, c, d);
On peut alors faire la même chose avec une classe Any
et des méthodes comme isNull
.
En Java 8, vous pouvez le faire de manière encore plus élégante:
if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }
ou vous pouvez l'extraire à une méthode:
public static boolean anyNull(Object... objects) {
return Stream.of(objects).anyMatch(Objects::isNull);
}
puis utilisez-le dans votre code comme ceci:
if (anyNull(a, b, c, d)) { ... }