Domanda

Ho un metodo che si aspetta un parametro set. Voglio passare in un set vuoto e non voglio alcun effetto collaterale sul set.

Posso farlo con le collezioni passando:

 Collections.unmodifiableSet(Sets.newHashSet())

Ma voglio passare:

 ImmutableSet.of()

Se faccio il primo a Set<Object> è creato e ottengo "Metodo non applicabile per l'errore di Args Set '. Se lo faccio ImmutableSet<Object> viene creato e ricevo un errore simile.

Questo funziona:

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

... ma sembra brutto e voglio trovare un modo di Google Collections.

È stato utile?

Soluzione

Prova questo:

ImmutableSet.<String>of()

Funzionerà anche questo:

Collections.<String>emptySet()

Questa sintassi è utile per specificare manualmente gli argomenti di tipo ogni volta che l'inferenza del tipo fallisce. :-)

Altri suggerimenti

Questo funzionerà anche:

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

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

Perché il tipo di inferenza nota che stai assegnando a Set<String> variabile e sa che il parametro di tipo deve essere String.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top