下面给出的org.apache.commons.collections.map.MultiValueMap
一个例子的MultiValueMap(commons-collections提供-3.2.1)使用Apache的共享集合
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
。
如何以这种方式更改声明有所作为?