निम्नलिखित NullPointerException क्यों फेंकता है? :विधि वापसी प्रकार में NullPointerException ऑब्जेक्ट
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
मैं जानता हूँ कि अगर मैं के कोड के बाद एक NullPointerException फेंक नहीं होगा कोई एक कार्य करें:
एक)
public static Object myTest() {
boolean x = false;
boolean y = false;
return x && y ? new Object() : x ? x : y ? y : (Object) null;
}
public static void main(String [ ] args) {
myTest();
}
बी)
public static Object myTest() {
Boolean x = false;
Boolean y = false;
return x && y ? new Object() : x ? x : y ? y : null;
}
public static void main(String [ ] args) {
myTest();
}
इसके अलावा, अगर मैं कोड बदलता हूं ई पूरी तरह से और निम्न उपाय अपनाते हैं यह काम करता है:
public static Object myTest() {
boolean x = false;
boolean y = false;
if(x && y) {
return new Object();
} else if(x) {
return x;
} else if(y) {
return y;
} else {
return null;
}
}
public static void main(String [ ] args) {
myTest();
}
मुझे लगता है कि संकलक एक अनुकूलन के कुछ प्रकार कर रहे हैं और किसी भी तरह चीजों को खिलवाड़ कर रहा है? मुझे लगता है कि यह किसी प्रकार की कास्टिंग समस्या है, लेकिन क्लासकास्ट अपवाद के बजाय उस मामले में यह नलपोइंटर अपवाद क्यों फेंक देगा? यह क्यों हो रहा है इस बारे में कोई भी जानकारी की सराहना की जाएगी!
अग्रिम
यह एक फेंक रहा है NullPointerException क्योंकि उस भयानक गड़बड़ी में कहीं नल पॉइंटर है। –
मैंने शुरुआत में यही सोचा था, लेकिन मुझे लगता है कि यह देखने लायक है, इसलिए +1 – Bathsheba
@laune, यह एक 'NullPointerException' फेंक देता है। –