下面給出的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
。
如何以這種方式更改聲明有所作爲?