有一個問題只是讓我感到困惑。我有一個HashMap被聲明爲使用一個字符串作爲鍵和我自己的KWIKattribute作爲值。HashMap get(Object)總是返回字符串而不是其他對象
private HashMap<String, KWIKattribute> attributes = new HashMap<String, KWIKattribute>();
我把物品進去,其中sgml_xml_tag是一個字符串和kattr是KWIKattribute的一個實例。
attributes.put(sgml_xml_tag, kattr);
當我試圖讓值回了作爲一個KWIKattribute
for (Map.Entry<String, KWIKattribute> e : attributes.entrySet()) {
String key = e.getKey();
KWIKattribute kattr = (KWIKattribute) attributes.get(e.getKey());
}
拋出一個異常
javax.faces.el.EvaluationException: java.lang.ClassCastException: java.lang.String cannot be cast to com.northgrum.adt.kwik.model.KWIKattribute
我知道這可能是我的一個簡單的愚蠢錯誤的地方,但我沒有看到它是什麼。有什麼建議麼?
你爲什麼不使用'e.getValue()'? – rptmat57
是什麼版本的JSF?它實現了JSF'javax.faces.el.EvaluationException'。您發佈的代碼與我認爲不相關。你能發佈堆棧跟蹤嗎? –
真正的問題是爲什麼在調用'attributes.get()'之後需要投射?如果它正在做我們所有人的想法,那麼該方法無論如何應該返回'KWIKattribute'參考。是否有可能使用本地範圍中的另一個映射來隱藏「屬性」的聲明? –