我正在尝试投射这样的地图:
Map<Integer, Map<String, String>> map =
(HashMap<Integer, Map<String, String>>) pMap;
输入pMap:
Map<Object, Map<Object, Object>> pMap
不幸的是它不起作用,我很想知道为什么,以及是否可以避免这个问题。
答案 0 :(得分:3)
这是因为即使Integer
是Object
的子类型,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>>
等。这是我发现的更灵活的方式。唯一的限制是在我在地图上操作时投射地图(通过Iterator
或keySet
)。
希望它可以帮助别人。