簡體   English   中英

Map.Entry中的classCastException

[英]classCastException in Map.Entry

關於我的代碼,我有些不了解。 當我執行以下代碼時,className1和value1從條目中獲取它們的值,但是當className2我獲取ClassCastException時,使用getValue = {java.util.Date@11632}處理條目時,日期不能轉換為String “太平洋夏令時間1997年6月1日00:00:00”

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();
}

應該很簡單,但我很想念...

我猜這是因為您得到的Map<String,String>實際上不是Map<String,String>而是Map<String,Date>

reportOptions.getInputValues()您進行了一些不安全的轉換,或者您使用的是原始類型,並且地圖實際上包含<String, Date>而不是<String, String>

要查找錯誤,請使用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!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM