私の Spring アプリケーションのコンテキスト ファイルには、次のような内容が含まれています。
<util:map id="someMap" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.String">
<entry key="some_key" value="some value" />
<entry key="some_key_2" value="some value" />
</util:map>
Java クラスでは、実装は次のようになります。
private Map<String, String> someMap = new HashMap<String, String>();
someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap");
Eclipse では、次のような警告が表示されます:
型の安全性: Object から HashMap<String,String> へのチェックなしのキャスト
何が悪かったのか?
ベストアンサー1
問題は、キャストが実行時チェックであることです。しかし、型の消去により、実行時には、他の および に関して、HashMap<String,String>
との間に実際には違いはありません。HashMap<Foo,Bar>
Foo
Bar
鼻をつまんで使っ@SuppressWarnings("unchecked")
てください。ああ、Java で具象化されたジェネリックを推進しましょう :)