これはおそらく私の一部では簡単な誤解です。そして、私が使用しようとMap <String、String>を拡張しているインターフェイスにHashMap <String、String>をキャストすることができません
public interface IParams extends Map<String,String> {
}
:
IParams params = (IParams) new HashMap<String,String>();
は、構文を渡し、コンパイルが、実行時に、私は得る:
java.lang.ClassCastException: java.util.HashMap cannot be cast to com.foobar.IParams
どこにどれ洞察
は、シンプルなインターフェイスを持っていますこの場合、ジェネリックの誤解はありますか?
のタイプではないよう
IParams
はあなたがMap
から派生インタフェースにもかかわらず、あなたはIParams
にキャストすることはできませんあなたのインターフェイスを実装していません。 – Marceloマップを拡張する理由はありますか?あなたはどんな方法よりも優先されますか? – kosa
ジェネリックを隠すインターフェイスを作成し、マップ文字列の定義を保持する(例では示されていない)インターフェイスを作成することです。 –