Java: Had to move away from using enums as keys for HashMaps, why does an enum keyed HashMap.get() returns null pointer? -
enum MyKeys {AKEY, BKEY, CKEY} मानचित्र & lt; MyKeys, Clazz & gt; Zzz = नया हैशमॉप & lt; मायकेज़, क्लाज & gt; (); Zzz.put (MyKeys.BKEY, नया Clazz ()); zzz.get (MyKeys.BKEY) .setValues (someValues); क्लैज xxx = जेज़.गेट (मायकीज़ बीकेई); // रिटर्न रिक्त
हालांकि यह सरल परिवर्तन सही मूल्य वापस करता है:
enum MyKeys {AKEY, BKEY, CKEY} मानचित्र & lt; स्ट्रिंग, क्लाज & gt; Zzz = नया हैशमैप & lt; स्ट्रिंग, क्लैज & gt; (); Zzz.put (MyKeys.BKEY, नया Clazz ()); zzz.get (MyKeys.BKEY) .setValues (someValues); क्लैज़ xxx = जेज़.गेट (मायकीज़.बीकेई.ओस्टस्ट्रिंग ()); // रिक्त नहीं लौटाता है
क्यों?
<पूर्व>
मानचित्र & lt; MyKeys, Clazz & gt; Zzz = नया हैशमैप & lt; MyKeys, स्ट्रिंग & gt; (); // इसका मतलब है कि यह शून्य नहीं लौटाएगा, मूल्य zzz.put (MyKeys.BKEY, नया क्लाज़ ()) को आरम्भ किया जाता है; // यह भ्रामक हिस्सा है ... कुछ अंक शून्य हो सकते हैं zzz.get (MyKeys.BKEY)। सेट वैल्यू (कुछ वैल्यू); क्लैज़ xxx = जेज़.गेट (मायकेज़.बीके); // निश्चित रूप से रिक्त नहीं होगा
क्या आप सुनिश्चित हैं कि यह हैशप वापस लौट रही है, और न ही getValues (), का परिणाम हैहैप में डाल दिया गया है।
< P> तुम कहीं एक त्रुटि है, नीचे की कोशिश: आयात java.util.HashMap; आयात करें java.util.Map; सार्वजनिक श्रेणी हैलोवाल्ड {सार्वजनिक स्थिर वर्ग क्लाज {सार्वजनिक स्ट्रिंग वैल; सार्वजनिक शून्य सेट वैल (स्ट्रिंग कुछ वैल्यू) {val = someValues; }} सार्वजनिक Enum MyKeys {AKEY, BKEY, CKEY; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {मानचित्र & lt; MyKeys, Clazz & gt; Zzz = नया हैशमॉप & lt; मायकेज़, क्लाज & gt; (); // इसका मतलब है कि यह शून्य नहीं लौटाएगा, मूल्य zzz.put (MyKeys.BKEY, नया क्लाज़ ()) को आरम्भ किया जाता है; // यह भ्रामक हिस्सा है ... कुछ स्थान शून्य हो सकते हैं zzz.get (MyKeys.BKEY) .सेटवेवल ("कुछ मूल्य"); क्लैज़ xxx = जेज़.गेट (मायकेज़.बीके); Println (xxx.val); }}
Comments
Post a Comment