का उपयोग करते समय मैं इस तरह मेरी जावा कोड लिखें:अजीब व्यवहार जब जावा त्रिगुट ऑपरेटर
Map<String, Long> map = new HashMap<>()
Long number =null;
if(map == null)
number = (long) 0;
else
number = map.get("non-existent key");
एप्लिकेशन की उम्मीद के रूप में चलाता है, लेकिन जब मैं यह कर:
Map<String, Long> map = new HashMap<>();
Long number= (map == null) ? (long)0 : map.get("non-existent key");
मैं पर एक NullPointerException मिल दूसरी पंक्ति। डिबग सूचक java.lang.Thread कक्षा में इस विधि के लिए दूसरी पंक्ति से कूदता है:
/**
* Dispatch an uncaught exception to the handler. This method is
* intended to be called only by the JVM.
*/
private void dispatchUncaughtException(Throwable e) {
getUncaughtExceptionHandler().uncaughtException(this, e);
}
यहाँ क्या हो रहा है? ये दोनों कोड पथ बिल्कुल बराबर नहीं हैं?
संपादित
मैं जावा 1.7 U25
आप असंभव के लिए क्यों परीक्षण कर रहे हैं? आप स्वयं 'नक्शा' बनाते हैं; यदि यह 'शून्य' है, तो आपका रनटाइम सिस्टम टूटा हुआ है। चूंकि यह स्पष्ट रूप से आपके द्वारा किए जा रहे अन्य कार्यों का एक छोटा संस्करण है, मैं सुझाव दूंगा कि आप सुनिश्चित करें कि वस्तुओं को हमेशा प्रारंभ किया जाता है इसलिए आपको 'map == null' चेक नहीं करना है। चाबियाँ आपकी समस्या हैं। –
@Eric Jablow यह मेरे कोड का एक सरलीकृत संस्करण है। प्रश्न में नक्शा वास्तव में किसी अन्य स्थान से पुनर्प्राप्त किया जा रहा है जहां वे मांग पर गतिशील रूप से बनाए गए हैं। यही कारण है कि चेक। यहां मैंने प्रारंभिकरण शामिल किया ताकि यह उन लोगों के लिए स्पष्ट हो जो उत्तर दे रहे हैं कि अगर मेरी समस्या – radiantRazor
हो रही है तो सही-सही मामला निष्पादित नहीं किया जा रहा है। शायद किसी को तुरंत अपवाद फेंकना होगा यदि कोई आपके कोड पर 'शून्य' मानचित्र पास कर रहा था। या, यदि कोई आपके कोड में 'शून्य' में गुजरता है, तो अपना नक्शा इसके बजाय खाली स्थान पर सेट करें। –