passando ImmutableSet em lugar de Definir?
-
23-09-2019 - |
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.
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
.