जैसा कि Damryfbfnetsi टिप्पणियों में बताते हैं , JLS has14.11 में निम्नलिखित नोट हैं:
nullस्विच लेबल के रूप में उपयोग करने के खिलाफ निषेध एक कोड को लिखने से रोकता है जिसे कभी भी निष्पादित नहीं किया जा सकता है। यदि switchअभिव्यक्ति एक संदर्भ प्रकार की है, Stringया एक बॉक्सिंग आदिम प्रकार या एक एनुम प्रकार है, तो एक रन-टाइम त्रुटि तब होगी जब अभिव्यक्ति nullरन टाइम पर मूल्यांकन करती है । जावा प्रोग्रामिंग भाषा के डिजाइनरों के फैसले में, यह पूरे switchबयान को चुपचाप छोड़ देने या defaultलेबल (यदि कोई हो) के बाद कथनों (यदि कोई हो) को निष्पादित करने के लिए चुनने से बेहतर परिणाम है ।
(जोर मेरा)
जबकि अंतिम वाक्य का उपयोग करने की संभावना से अधिक है case null:, यह उचित लगता है और भाषा डिजाइनरों के इरादों में एक दृश्य प्रस्तुत करता है।
यदि हम कार्यान्वयन विवरणों को देखते हैं, तो क्रिश्चियन हुजेर के इस ब्लॉग पोस्टnull में स्विच में अनुमति नहीं देने के बारे में कुछ व्यावहारिक अटकलें हैं (हालांकि यह enumस्विच के बजाय स्विच पर केंद्रित है String):
हुड के तहत, switchबयान आम तौर पर एक tablesswitch बाइट कोड के लिए संकलन होगा। और "भौतिक" तर्क के switchसाथ-साथ इसके मामले भी हैं int। स्विच करने का इंटिमेट वैल्यू विधि को लागू करके निर्धारित किया जाता है Enum.ordinal()। [...] अध्यादेश शून्य से शुरू होते हैं।
इसका मतलब है कि मानचित्रण nullके लिए 0एक अच्छा विचार नहीं होगा। पहले ईनम मान पर एक स्विच अशक्त से अप्रभेद्य होगा। हो सकता है कि यह एक अच्छा विचार रहा होगा कि 1. अध्यादेशों के लिए अध्यादेशों को गिनना शुरू किया जाए। हालांकि, इसे इस तरह परिभाषित नहीं किया गया है और इस परिभाषा को बदला नहीं जा सकता है।
जबकि Stringस्विच अलग तरीके से कार्यान्वित किए जाते हैं , enumस्विच पहले आया और संदर्भ के प्रकार को स्विच करने के लिए मिसाल दी गई है कि जब संदर्भ होता है तो व्यवहार करना चाहिए null।