Não, este método não existe na Goiaba e está em nosso "cemitério de idéias".
Não acreditamos que "é nulo ou vazio" seja uma pergunta que você realmente queira fazer sobre uma coleção.
Se uma coleção pode ser nula e nula deve ser tratada da mesma forma que vazia, tire toda essa ambigüidade logo de cara, assim:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
ou assim (se preferir):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
Depois disso, você pode usar .isEmpty()
normalmente. Faça isso imediatamente após chamar a API impertinente e você deixará a estranheza para trás, em vez de deixá-la continuar indefinidamente.
E se o "nulo que realmente significa coleção vazia" não está sendo devolvido para você, mas passado para você, seu trabalho é fácil: apenas deixe um NullPointerException
ser lançado e faça o chamador formar.
null
para uma coleção vazia o mais rápido possível. Se você simplesmente não puder, então tudo bem, você pode ser um dos <1% dos usuários que realmente querem escrever seu próprio auxiliar isNullOrEmpty (Collection) trivial.if (collection == null || collection.isEmpty())
nos casos em que você precisar! Isso é tão ruim?)Uma coisa que você descobrirá em toda a Guava é que eles tendem a ser muito antagônicos em relação aos
null
s. Os autores desejam desencorajá-lo de usarnull
tanto quanto você provavelmente usa , e fornecer métodos utilitários para torná-lo mais fácil de usarnull
seria contraproducente contra esse fim.Se você quiser usar o paradigma do Guava, considere se a fonte desta coleção (ou array) realmente deve retornar opcionalmente
null
. Caso contrário, considere marcá-lo@NonNull
e retornar coleções vazias em vez denull
. Ou como um parâmetro para uma função que está esperandonull
listas sem valores, considere usarPreconditions.checkNotNull
, que lança uma exceção se anull
for (inesperadamente) passado.Se
null
realmente é legítimo,list == null || list.isEmpty()
não é tão difícil.fonte
Há um CollectionUtils.isEmpty () nas coleções comuns.
fonte
Spring Framework tem uma classe util especializada chamada
CollectionUtils
. E o método que você está procurando é:org.springframework.util.CollectionUtils.isEmpty
. Ele retorna verdadeiro para coleções nulas e vazias.E para matrizes, há um
org.springframework.util.ObjectUtils.isEmpty
método que se comporta da mesma forma.fonte
Apache CollectionUtils 4 tem um método CollectionUtils.emptyIfNull () que retorna uma lista vazia se a coleção for nula. Isso é muito útil em um loop foreach, então você não precisa fazer uma verificação de nulo antes de iterar
fonte
Minha solução é: MoreObjects.firstNonNull (list, Collections. EmptyList ())
Estou usando Guava MoreObjects com coleções JDK.
fonte
ImmutableList
.Observe em Appache Collections CollectionUtils.isEmpty () retorna true se a coleção for nula ou vazia
fonte