我正在尝试像这样投射地图:
Map<Integer, Map<String, String>> map =
(HashMap<Integer, Map<String, String>>) pMap;
pMap 输入:
Map<Object, Map<Object, Object>> pMap
不幸的是它不起作用,我很想知道为什么,以及是否有可能避免这个问题。
这是因为即使Integer
是 的子类型Object
,Map<Integer, Integer>
也不是的子类型Map<Object, Object>
。
你根本不能那样施放它。
这将在Java 教程中进一步解释。
我对泛型类不太熟悉,但你可以试试 Map<吗?, Map> map 将 Integer 替换为 ? 它会很容易地为您的 Integer 设置大小写,并且正如您在上面所写的那样,该键也可以是字符串,所以我希望它对您有用。
所以,这是我为避免这个问题所做的:
我这样输入我的地图:
Map<? super Object, ? super Object>
它有效,我可以在这张地图中放任何我想要的东西。有可能 :
Map<String, String>
或者 :
Map<Integer, Map<String, String>>
等等。这是我发现的更灵活的方式。唯一的限制是在我对地图进行操作时(通过Iterator
或使用keySet
)投射地图。
希望它可以帮助某人。