2011-10-20 55 views
0

有一些关于我的代码,我不明白。 当我执行下面的代码className1和value1从条目中获取它们的值,但是当为className2我得到ClassCastException日期不能转换为字符串时处理条目与getValue = {[email protected] }“孙军01 00:00:00 1997年PDT”在Map.Entry中的classCastException

String key1="", className1="", value1=""; 
String key2="", className2="", value2=""; 
Object obj; 

Map<String, String> inputValues = reportOptions.getInputValues(); 
for (Map.Entry<String, String> entry: inputValues.entrySet()){ 
    key1 = entry.getKey().toString(); 
    obj = entry.getValue(); 
    className1 = obj.getClass().getName(); 
    value1 = obj.toString(); 

    className2 = entry.getValue().getClass().getName(); 
    value2 = entry.getValue().toString(); 
} 

应该是简单的,但我失踪了......

+2

你能告诉我们,填充inputValues地图的代码? –

回答

2

我猜这是因为你得到的地图实际上不是Map<String,String>而是Map<String,Date>

+0

谢谢!我怎么错过了! – special0ne

1

reportOptions.getInputValues()你有一些不安全的演员,或者您正在使用原始类型,而您的地图实际上包含<String, Date>而不是<String, String>

0

要找到错误,使用Collections.checkedMap使程序炸毁究竟哪里不好数据进入地图:

java.util.HashMap map = new java.util.HashMap(); 
map.put(new Integer(4), new Integer(7)); // OK - HashMap does not care, nor does Java 

java.util.Map safeMap = java.util.Collections.checkedMap(map,String.class,String.class); 
safeMap.put(new Integer(6), new Integer(9)); // WILL blow up!