0

私はこのようにマップをキャストしようとしています:

Map<Integer, Map<String, String>> map = 
                 (HashMap<Integer, Map<String, String>>) pMap;

pMap は次のように入力されます。

Map<Object, Map<Object, Object>> pMap

残念ながら機能しません。その理由と、問題を回避できるかどうかを知りたいです。

4

3 に答える 3

3

これは、Integerは のサブタイプですが、 のサブタイプでObjectMap<Integer, Integer>ないためですMap<Object, Object>

そのようにキャストすることはできません。

これについては、Java チュートリアルで詳しく説明されています。

于 2012-11-01T07:01:39.960 に答える
0

私はジェネリック クラスにあまり詳しくありませんが、 Map< を試してもらえますか? 、Map> Integer を ? に置き換えた後の map 整数を簡単にケースに入れることができます。上で書いたように、このキーも文字列にすることができるので、うまくいくことを願っています。

于 2012-11-01T07:23:48.473 に答える
0

したがって、この問題を回避するために私がしたことは次のとおりです。

次のようにマップを入力しました:

Map<? super Object, ? super Object>

このマップの中に好きなものを入れることができます。かもね :

Map<String, String>

また :

Map<Integer, Map<String, String>>

など。これは、私が見つけたより柔軟な方法です。唯一の制約は、マップを操作するときにマップをキャストすることです (Iteratorまたは を介し​​てkeySet)。

それが誰かを助けることを願っています。

于 2012-11-01T14:09:22.677 に答える