1) Jeżeli mapa może być niezmienna:
Collections.emptyMap();
// or, in some cases:
Collections.<String, String>emptyMap();
You Będą musieli używać tego ostatniego czasami, gdy kompilator nie będzie w stanie automatycznie określić, jaki rodzaj mapy jest potrzebny (nazywa się to type inference). Na przykład, rozważmy metody zadeklarowane tak:
public void foobar(Map<String, String> map){ ... }
Po minięciu pusty Mapa bezpośrednio do niego, trzeba być jawne o typie:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2) Jeśli trzeba można modyfikować z mapy, na przykład:
new HashMap<String, String>();
(jak tehblanx pointed out)
Uzupełnienie: jeśli projekt wykorzystuje Guava, dostępne są następujące warianty:
1) Niezmienne mapy:
ImmutableMap.of();
// or:
ImmutableMap.<String, String>of();
prawda, żadne wielkie korzyści tutaj w porównaniu do Collections.emptyMap()
. From the Javadoc:
Ta mapa zachowuje się i działa porównywalnie do Collections.emptyMap()
, i jest korzystne głównie dla spójności i konserwacji swojego kodu .
2) mapy, które można modyfikować:
Maps.newHashMap();
// or:
Maps.<String, String>newHashMap();
Maps
zawiera podobne metody fabryczne instancji inne rodzaje map, jak również, takie jak TreeMap
lub LinkedHashMap
.
Jaki jest twój zadeklarowany typ dla fileParameters? – jjnguy
Prawdopodobnie uzyskasz również wyjątek ClassCastException. –
fileParameters powinna być Mapą, a nie HashMap. –