enum MyKeys { AKEY, BKEY, CKEY }
Map <MyKeys, Clazz> zzz = new HashMap<MyKeys, Clazz>();
zzz.put(MyKeys.BKEY, new Clazz());
zzz.get(MyKeys.BKEY).setValues(someValues);
Clazz xxx = zzz.get(MyKeys.BKEY);//returns null
但是這個簡單的變化使得它返回正確的值:Java:不得不使用枚舉作爲HashMaps的鍵,爲什麼枚舉鍵HashMap.get()返回空指針?
enum MyKeys { AKEY, BKEY, CKEY }
Map <String, Clazz> zzz = new HashMap<String, Clazz>();
zzz.put(MyKeys.BKEY, new Clazz());
zzz.get(MyKeys.BKEY).setValues(someValues);
Clazz xxx = zzz.get(MyKeys.BKEY.toString());//doesn't returns null
爲什麼?
你怎麼填滿第一個hashmap?還有enummap以及btw – NimChimpsky
您是否在使用它之前將BKEY定義爲enum?否則,您必須將其用作「MyKeys.BKEY」而不是「BKEY」。所以'zzz.put(MyKeys.BKEY,「bla」)''和'zzz.get(MyKeys.BKEY)' – Omoro
提供一個完整的程序來重現問題。枚舉和HashMaps中的鍵很好,而你沒有顯示的是問題出在哪裏。 –