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> map 将 Integer 替换为 ? 它会很容易地为您的 Integer 设置大小写,并且正如您在上面所写的那样,该键也可以是字符串,所以我希望它对您有用。

于 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 回答