Pergunta

Eu tenho um método que espera um parâmetro de Conjunto.Eu quero passar em um conjunto vazio, e eu não quero quaisquer efeitos secundários sobre o Conjunto.

Eu posso fazer isso com coleções passando:

 Collections.unmodifiableSet(Sets.newHashSet())

Mas eu quero passar:

 ImmutableSet.of()

Se eu fizer o ex-um Set<Object> é criado e recebo o método não é aplicável para args Conjunto de erro'.Se eu fizer o último que eu chegar ImmutableSet<Object> é criada e eu fico de erro semelhante.

Isso funciona:

 Collections.unmodifiableSet(new HashSet<String>())

...mas parece feio, e quero encontrar um Google Coleções forma.

Foi útil?

Solução

Tente isso:

ImmutableSet.<String>of()

Isso vai funcionar também:

Collections.<String>emptySet()

Esta sintaxe é útil para especificar manualmente o tipo de argumentos a qualquer tempo, a inferência de tipo de falha.:-)

Outras dicas

Isso também irá trabalhar:

public static void main(String[] args) {
    Set<String> emptySet = ImmutableSet.of();
    doStuffWith(emptySet);
}

static void doStuffWith(Set<String> strings) {
    // ...
}

porque a inferência de tipo de avisos que você está atribuindo a um Set<String> variável e sabe que o tipo de parâmetro deve ser String.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top