Pregunta

Tengo un método que espera un parámetro establecido. Quiero pasar en un conjunto vacío, y no quiero ningún efecto secundario en el conjunto.

Puedo hacer esto con colecciones pasando:

 Collections.unmodifiableSet(Sets.newHashSet())

Pero quiero pasar:

 ImmutableSet.of()

Si hago el primero un Set<Object> se crea y obtengo "el método no aplicable para el error de args set '. Si hago este último ImmutableSet<Object> se crea y obtengo un error similar.

Esto funciona:

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

... pero parece feo, y quiero encontrar una forma de colecciones de Google.

¿Fue útil?

Solución

Prueba esto:

ImmutableSet.<String>of()

Esto también funcionará:

Collections.<String>emptySet()

Esta sintaxis es útil para especificar manualmente argumentos de tipo cada vez que falla la inferencia de tipo. :-)

Otros consejos

Esto también funcionará:

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

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

porque el tipo de inferencia se da cuenta de que está asignando a un Set<String> variable y sabe que el parámetro de tipo debe ser String.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top