Non, cette méthode n'existe pas à Guava et se trouve en fait dans notre «cimetière d'idées».
Nous ne pensons pas que "est nul ou vide" soit une question que vous voudriez vraiment poser à propos d'une collection.
Si une collection peut être nulle et que null doit être traitée de la même manière que vide, éliminez toute cette ambiguïté à l'avance, comme ceci:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
ou comme ça (si vous préférez):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
Après cela, vous pouvez simplement utiliser .isEmpty()
comme d'habitude. Faites-le immédiatement après avoir appelé l'API coquine et vous avez mis l'étrangeté derrière vous, au lieu de la laisser continuer indéfiniment.
Et si le "null qui signifie vraiment une collection vide" ne vous est pas retourné, mais vous est passé, votre travail est facile: laissez simplement un NullPointerException
être jeté, et faites en sorte que l'appelant se forme.
Kevin Bourrillion
la source
null
à une collection vide dès que vous le pouvez. Si vous ne pouvez tout simplement pas, alors d'accord, vous pourriez être l'un des <1% des utilisateurs qui veulent vraiment écrire leur propre assistant trivial isNullOrEmpty (Collection).if (collection == null || collection.isEmpty())
dans les cas où vous en avez besoin! Est-ce si grave?)Une chose que vous aurez tendance à trouver dans Guava est qu'ils ont tendance à être très antagonistes envers les
null
s. Les auteurs veulent vous décourager d'en utilisernull
autant que vous le faites probablement, et fournir des méthodes utilitaires pour le rendre plus facile à utilisernull
serait contre-productif à cette fin.Si vous souhaitez utiliser le paradigme de Guava, demandez-vous si la source de cette collection (ou tableau) doit vraiment revenir en option
null
. Sinon, pensez à le marquer@NonNull
et renvoyez des collections vides à la place denull
. Ou en tant que paramètre d'une fonction qui attend desnull
listes sans valeur, envisagez d'utiliserPreconditions.checkNotNull
, qui lève une exception si anull
est (de manière inattendue) passé.Si c'est
null
vraiment légitime, celist == null || list.isEmpty()
n'est pas si difficile.la source
Il y a un CollectionUtils.isEmpty () dans les collections communes.
la source
Spring Framework a une classe util spécialisée appelée
CollectionUtils
. Et la méthode que vous recherchez est:org.springframework.util.CollectionUtils.isEmpty
. Il renvoie true pour les collections nulles et vides.Et pour les tableaux, il existe une
org.springframework.util.ObjectUtils.isEmpty
méthode qui se comporte à peu près de la même manière.la source
Apache CollectionUtils 4 a une méthode CollectionUtils.emptyIfNull () qui renvoie une liste vide si la collection est nulle. Ceci est très utile dans une boucle foreach, vous n'avez donc pas besoin de faire une vérification nulle avant d'itérer
la source
Ma solution est: MoreObjects.firstNonNull (liste, Collections. EmptyList ())
J'utilise Guava MoreObjects avec des collections JDK.
la source
ImmutableList
.Regardez les collections Appache CollectionUtils.isEmpty () renvoie true si la collection est nulle ou vide
la source