我正在使用hashmaps的遞歸樹,特別是Hashmap映射,其中Object是對另一個Hashmap的引用等等。這將圍繞一個遞歸算法進行傳遞:Java泛型類型帶有遞歸哈希映射的安全警告
foo(String filename, Hashmap<String, Object> map)
{
//some stuff here
for (Entry<String, Object> entry : map.entrySet())
{
//type warning that must be suppressed
foo(entry.getKey(), (HashMap<String, Object>)entry.getValue());
}
}
我知道肯定是Object
Hashmap<String, Object>
型的,但我惱火,我要抑制使用@SuppressWarnings("unchecked")
警告。
我會滿意於一個解決方案,該解決方案可以執行assert(/*entry.getValue() is of type HashMap<String, Object>*/)
或者在不是時拋出異常。爲了編譯類型安全,我放下了泛型路由,如果我壓制警告,那麼它就會失敗。
謝謝您的意見, KSB
親愛的蠟燭, 我結束了實現你的第二個建議,因爲事實證明我需要添加額外的東西到「節點」,而不僅僅是對另一個散列表的引用。它也感覺更自然。 我剛剛與Java交手,所以無法理解你的第一個建議 - 「T擴展地圖」部分。 再次感謝你, KSB –
2010-03-15 01:11:11