无法投射<object,map <object,=“”object =“”>&gt;映射到更具体的类型化地图</object,>

时间:2012-11-01 06:52:48

标签: java object map casting

我正在尝试投射这样的地图:

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

输入pMap:

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

不幸的是它不起作用,我很想知道为什么,以及是否可以避免这个问题。

3 个答案:

答案 0 :(得分:3)

这是因为即使IntegerObject的子类型,Map<Integer, Integer> 也不是 Map<Object, Object>的子类型。

你根本就不能这样投。

Java Tutorials进一步解释了这一点。

答案 1 :(得分:0)

我对泛型类不是很熟悉,但您可以尝试Map&lt; ,Map&gt;地图 更换Integer之后?这将很容易你的整数,并且如上所述,这个键也可以是字符串,所以我希望它对你有用。

答案 2 :(得分:0)

所以,这就是我为避免这个问题所做的工作:

我输入了这样的地图:

Map<? super Object, ? super Object>

它有效,我可以在这张地图中放置任何我想要的东西。它可以是:

Map<String, String>

或:

Map<Integer, Map<String, String>>

等。这是我发现的更灵活的方式。唯一的限制是在我在地图上操作时投射地图(通过IteratorkeySet)。

希望它可以帮助别人。