【发布时间】:2014-10-06 11:25:54
【问题描述】:
下面给出org.apache.commons.collections.map.MultiValueMap 的示例(来自commons-collections-3.2.1)
Map<String, Object> multiValueMap = MultiValueMap.decorate(new HashMap<String, Object>());
multiValueMap.put("orderId", 1L);
for(Map.Entry<String, Object> entry : multiValueMap.entrySet()) {
List<Object> value = (List<Object>) entry.getValue();
System.out.println(entry.getKey()+" : "+value.get(0));
}
这看起来很好。它显示一个键和与该键关联的值。
如果声明改变如下,
Map<String, Object> multiValueMap = MultiValueMap.decorate(new HashMap<String, Object>(){{
put("orderId", 1L);
}});
然后它抛出一个异常 -
java.lang.ClassCastException: java.lang.Long cannot be cast to java.util.List
在给定的唯一 foreach 循环的第一行。
在这种情况下,给定的MultiValueMap 并不是真正的MultiValueMap。这是一个普通的HashMap。
以这种方式更改声明有何不同?
【问题讨论】:
标签: java apache-commons-collection