No, este método no existe en Guayaba y de hecho está en nuestro "cementerio de ideas".
No creemos que "es nulo o vacío" sea una pregunta que realmente quieras hacerte sobre una colección.
Si una colección puede ser nula, y la nula debe tratarse de la misma forma que vacía, elimine toda esa ambigüedad desde el principio, así:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
o así (si lo prefiere):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
Después de eso, puedes usarlo .isEmpty()
como de costumbre. Haga esto inmediatamente después de llamar a la API traviesa y habrá dejado atrás la rareza, en lugar de dejar que continúe indefinidamente.
Y si el "nulo que realmente significa colección vacía" no se le devuelve, sino que se le pasa, su trabajo es fácil: simplemente deje que NullPointerException
se lance un y haga que la persona que llama se configure.
null
a una colección vacía tan pronto como pueda. Si simplemente no puede, entonces está bien, podría ser uno del <1% de usuarios que realmente quieren escribir su propio ayudante trivial isNullOrEmpty (Collection).if (collection == null || collection.isEmpty())
en los casos en que lo necesite! ¿Es tan malo?)Una cosa que tenderá a encontrar en toda Guayaba es que tienden a ser muy antagónicos hacia
null
s. Los autores quieren disuadirlo de que usenull
tanto como probablemente lo haga, y proporcionar métodos de utilidad para facilitar su usonull
sería contraproducente para este fin.Si desea utilizar el paradigma de Guava, considere si la fuente de esta colección (o matriz) realmente debería regresar opcionalmente
null
. Si no es así, considere marcarlo@NonNull
y devolver colecciones vacías en lugar denull
. O como un parámetro para una función que esperanull
listas sin valor, considere usarPreconditions.checkNotNull
, que genera una excepción si senull
pasa (inesperadamente).Si
null
realmente es legítimo,list == null || list.isEmpty()
no es tan difícil.fuente
Hay un CollectionUtils.isEmpty () en commons-collections.
fuente
Spring Framework tiene una clase de utilidad especializada llamada
CollectionUtils
. Y el método que busca es:org.springframework.util.CollectionUtils.isEmpty
. Devuelve verdadero para colecciones nulas y vacías.Y para las matrices hay un
org.springframework.util.ObjectUtils.isEmpty
método que se comporta de la misma manera.fuente
Apache CollectionUtils 4 tiene un método CollectionUtils.emptyIfNull () que devuelve una lista vacía si la colección es nula. Esto es muy útil en un bucle foreach, por lo que no necesita hacer una verificación nula antes de iterar
fuente
Mi solución es: MoreObjects.firstNonNull (lista, Colecciones. EmptyList ())
Estoy usando Guava MoreObjects con JDK Collections.
fuente
ImmutableList
.Mire las colecciones de Appache CollectionUtils.isEmpty () devuelve verdadero si la colección es nula o está vacía
fuente