空のマップを作成する必要があります。
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
問題は、上記のコードが次の警告を生成することです。型の安全性: Map から HashMap へのチェックなしのキャスト
この空のマップを作成する最良の方法は何ですか?
ベストアンサー1
1)マップが不変である場合:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
コンパイラがどのような種類のマップが必要かを自動的に判断できない場合は、後者を使用する必要がある場合があります(これは型推論たとえば、次のように宣言されたメソッドを考えます。
public void foobar(Map<String, String> map){ ... }
空の Map を直接渡す場合は、型を明示的に指定する必要があります。
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2)マップを変更できるようにする必要がある場合は、たとえば次のようになります。
new HashMap<String, String>()
(としてtehblanxが指摘した)
補遺: プロジェクトでグアバ、次の選択肢があります。
1)不変マップ:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
確かに、 と比較してここでは大きな利点はありませんCollections.emptyMap()
。Javadocより:
このマップは と同等の動作とパフォーマンスを発揮し
Collections.emptyMap()
、主にコードの一貫性と保守性の点で適しています。
2)変更できるマップ:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
他の種類のマップをインスタンス化するための同様のファクトリーメソッドも含まれています。TreeMap
またはLinkedHashMap
。
アップデート(2018): の上Java9 について以降では、不変の空のマップを作成するための最短のコードは次のとおりです。
Map.of()
...新しい便利なファクトリーメソッドからJEP 269. ��