Muszę stworzyć pustą mapę.
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
Problem polega na tym, że powyższy kod generuje takie ostrzeżenie: Bezpieczeństwo typów: Niezaznaczone rzutowanie z mapy do HashMap
Jaki jest najlepszy sposób na stworzenie tej pustej mapy?
java
dictionary
collections
hashmap
JorgeO
źródło
źródło
Odpowiedzi:
1) Jeśli mapa może być niezmienna:
Będziesz musiał użyć tego ostatniego czasami, gdy kompilator nie może automatycznie określić, jaki rodzaj mapy jest potrzebny (nazywa się to wnioskiem o typie ). Na przykład rozważmy metodę zadeklarowaną w ten sposób:
Przekazując pustą mapę bezpośrednio do niej, musisz wyraźnie określić typ:
2) Jeśli musisz mieć możliwość modyfikowania mapy, to na przykład:
(jak wskazał tehblanx )
Dodatek : Jeśli Twój projekt wykorzystuje guawę , masz następujące alternatywy:
1) Niezmienna mapa:
To prawda, nie ma tu dużych korzyści w porównaniu z
Collections.emptyMap()
. Z Javadoc :2) Mapa, którą możesz modyfikować:
Maps
zawiera podobne metody fabryczne do tworzenia wystąpień innych typów map, takich jakTreeMap
lubLinkedHashMap
.Aktualizacja (2018) : W Javie 9 lub nowszej najkrótszy kod do tworzenia niezmiennej pustej mapy to:
... używając nowych metod fabrycznych z JEP 269 . 😎
źródło
Collections.emptyMap ()
źródło
Metoda emptyMap klasy Collections .
źródło
Jeśli potrzebujesz instancji HashMap, najlepszym sposobem jest:
Ponieważ Map jest interfejsem, musisz wybrać klasę, która go utworzy, jeśli chcesz utworzyć pustą instancję. HashMap wydaje się równie dobry jak każdy inny - więc po prostu go używaj.
źródło
Albo
Collections.emptyMap()
, albo jeśli wnioskowanie o typie nie działa w Twoim przypadku,Collections.<String, String>emptyMap()
źródło
Ponieważ w wielu przypadkach pusta mapa jest używana do projektowania null-safe, można skorzystać z
nullToEmpty
metody narzędziowej:Podobnie dla zestawów:
i listy:
źródło
Co powiesz na :
Map <String, String> s = Collections.emptyMap ();
źródło