Frage

Ich habe eine Methode, die einen festgelegten Parameter erwartet. Ich möchte ein leeres Set eingeben, und ich möchte keine Nebenwirkungen am Set.

Ich kann dies mit Sammlungen tun, indem ich einging:

 Collections.unmodifiableSet(Sets.newHashSet())

Aber ich möchte eingeben:

 ImmutableSet.of()

Wenn ich das erstere mache a Set<Object> wird erstellt und ich erhalte "Methode, die nicht für Args Set" -Fehler anwendbar sind. Wenn ich letztere mache, bekomme ich ImmutableSet<Object> wird erstellt und ich erhalte einen ähnlichen Fehler.

Das funktioniert:

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

... aber scheint hässlich, und ich möchte eine Google -Sammlungsstraße finden.

War es hilfreich?

Lösung

Versuche dies:

ImmutableSet.<String>of()

Dies wird auch funktionieren:

Collections.<String>emptySet()

Diese Syntax ist nützlich, um die Typ -Argumente zu manuell anzugeben, wenn der Typ -Inferenz fehlschlägt. :-)

Andere Tipps

Dies wird auch funktionieren:

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

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

Weil der Typ -Inferenz bemerkt, dass Sie a zuweisen Set<String> Variable und weiß, dass der Typparameter sein muss String.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top