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.

Était-ce utile?

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)) { ... }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top