टर्नरी ऑपरेटर बनाम यदि पूर्णांक के शून्य रिटर्न के लिए स्टेटमेंट
जावा में, टर्नरी ऑपरेटर (?:) के असाइनमेंट की अनुमति देता है प्रकार int के एक चर के लिए शून्य, भले ही int एक आदिम डेटा प्रकार है जो शून्य मानों का समर्थन नहीं करता है। निम्नलिखित कोड स्निपेट पर विचार करें:
int temp() {
return true ? null : 0;
}
इस कोड में, यदि मूल्यांकन की गई स्थिति सत्य है तो टर्नरी ऑपरेटर वेरिएबल टेम्प को शून्य असाइन करता है, अन्यथा यह 0 असाइन करता है। कंपाइलर बिना कोई त्रुटि जारी किए इस असाइनमेंट की अनुमति देता है। हालाँकि, जब विधि निष्पादित की जाती है, तो यह रनटाइम पर एक NullPointerException को फेंक देगा क्योंकि null int के लिए एक वैध मान नहीं है। आदिम प्रकार. उदाहरण के लिए:
int वही() { यदि सही) { शून्य वापसी; } अन्य { वापसी 0; } }int same() {
if (true) {
return null;
} else {
return 0;
}
}
टर्नरी ऑपरेटर के मामले में, कंपाइलर एक पूर्णांक के शून्य संदर्भ के रूप में शून्य शाब्दिक की व्याख्या करता है, जो कि इंट के लिए रैपर क्लास है। यह ऑटोबॉक्सिंग और अनबॉक्सिंग के लिए कंपाइलर नियमों के कारण है: एक आदिम प्रकार से ऑब्जेक्ट प्रकार में कनवर्ट करते समय, जावा वर्चुअल मशीन (जेवीएम) स्वचालित रूप से संबंधित ऑब्जेक्ट रैपर में आदिम मान को लपेटता है।
चूंकि int एक है आदिम प्रकार, कंपाइलर टर्नरी ऑपरेटर द्वारा लौटाए गए शून्य मान को अनबॉक्स करने का प्रयास करेगा, जिसके परिणामस्वरूप NullPointerException होता है।
दूसरी ओर, यदि कथन इस अनबॉक्सिंग प्रक्रिया को निष्पादित नहीं करता है, और शून्य शाब्दिक रहता है ऑब्जेक्ट के शून्य संदर्भ के रूप में। चूंकि समान() विधि का रिटर्न प्रकार int है, कंपाइलर शून्य संदर्भ को int में परिवर्तित नहीं कर सकता है, इसलिए संकलन-समय त्रुटि होती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3