मैं जावा में एक स्विच बयान है, एक Enum जो हमें IMyInterface.MyEnumenums पर जावा स्विच स्टेटमेंट में, जब मैं प्रत्येक मामले में अपने मूल्यों को अर्हता प्राप्त करता हूं तो मुझे संकलन त्रुटि क्यों मिल रही है? IMyInterface.MyEnum.MyValue, (हालांकि मैं IMyInterface छोड़ सकता है अगर मैं आयातित:
मेरे मामले में बयान से प्रत्येककॉल पर रूप है)।
हालांकि, कंपाइलर (जावा 6) एक त्रुटि फेंकता है: "योग्य केस लेबल IMyInterface.MyEnum.MyValue को unqalified enum स्थिर MyValue के साथ प्रतिस्थापित किया जाना चाहिए"।
मैं स्पष्ट रूप से ऐसा कर सकता हूं, लेकिन मेरे जीवन के लिए मुझे समझ में नहीं आता कि इस त्रुटि का उद्देश्य क्या है। जाहिर है, यदि संकलक वास्तविक मूल्य से निपट सकता है, तो यह पूरी तरह से योग्य नाम से निपटने में सक्षम होना चाहिए जैसा कि यह स्थिरांक के लिए होगा। असल में, मैंने माना होगा कि संकलक स्थिरता को पूर्णतः योग्य नाम में बदल देता है।
तो, जावा गुरु, इसके पीछे तर्क क्या है? धन्यवाद!
व्यक्तिगत रूप से, मुझे कोई फर्क नहीं पड़ता कि स्विच-केस ब्लॉक में एनम योग्य नहीं हो सकते हैं; यह कोड को और अधिक पठनीय बनाता है। ध्यान रखें कि आपके पास मौजूद एनम कक्षाओं के लिए (कोड में आप संपादित कर सकते हैं), सबसे अच्छा अभ्यास स्विच-केस ब्लॉक का उपयोग कभी नहीं करना है। इस स्थिति में स्विच-केस से एनम निरंतर-विशिष्ट विधियां अधिक रखरखाव और कम नाजुक हैं। – scottb