为什么不是 Map<String,List<SomeBean>>
可浇注至Map<String,List<?>>
?
我现在正在做的是:
Map<String, List<SomeBean>> fromMap = new LinkedHashMap<String, List<SomeBean>>();
/* filling in data to fromMap here */
Map<String,List<?>> toMap = new LinkedHashMap<String, List<?>>();
for (String key : fromMap.keySet()) {
toMap.put(key, fromMap.get(key));
}
在我看来,应该有一种方法可以绕过这种手动转换,但我不知道如何实现。有什么想法吗?
最佳答案
转换无效,因为在 Map
例如:
//List<SomeBean> are ok in both lists
fromMap.put("key", new ArrayList<SomeBean>());
toMap.put("key", new ArrayList<SomeBean>());
//List<String> are ok in Map<String,List<?>>, not in Map<String, List<SomeBean>>
fromMap.put("key", new ArrayList<String>()); //DOES NOT COMPILE
toMap.put("key", new ArrayList<String>());
为了简化您的代码,您可以使用适当的构造函数来简化您的代码:
Map<String, List<SomeBean>> fromMap = new LinkedHashMap<String, List<SomeBean>>();
Map<String,List<?>> toMap = new LinkedHashMap<String, List<?>>(fromMap);
关于Java 类型转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1939871/