यह विभिन्न enum प्रकारों के खिलाफ तुलना करने की क्षमता से बचने के लिए है।
एक प्रकार, यानी
switch
कथन में enum मान का प्रकार प्रतिबंधित करना समझ में आता है।
अद्यतन: यह वास्तव में बाइनरी संगतता रखने के लिए है। यहाँ एक के बारे में आधे रास्ते chapter 13.4.9 JLS की से अदालत में तलब है:
स्थिरांक को इनलाइन करने की आवश्यकता होती है के लिए
एक कारण यह है कि switch
बयान प्रत्येक case
पर स्थिरांक की आवश्यकता है, और कोई दो तरह के निरंतर मूल्यों एक ही हो सकता है। कंपाइलर संकलन समय पर switch
कथन में डुप्लिकेट स्थिर मानों के लिए जांच करता है; class
फ़ाइल प्रारूप केस मानों का प्रतीकात्मक लिंक नहीं करता है।
दूसरे शब्दों में, EnumType.ENUM1
में वर्ग पहचानकर्ता की वजह से, यह एक compiletime निरंतर अभिव्यक्ति के रूप में, जबकि यह switch
बयान के लिए आवश्यक है नहीं दर्शाया जा सकता।
होगा "जावा खामियां है और वास्तव में इसे समझने की कोशिश नहीं करते "एक उचित उत्तर हो? मेरा मतलब है, यहां जवाब महान और विस्तृत हैं, लेकिन इस मामले में मुझे लगता है कि वे वास्तव में कोई फर्क नहीं पड़ता। +1 प्रश्न, -1 जावा ... –
@ColinD आपके मामले में [सही स्पष्टीकरण] (http://stackoverflow.com/a/2664040/506879) है। Enums पर (इस कामकाजी नमूने के साथ) पर इस क्वालीफायर मुद्दे के समाधान के बारे में विस्तार से देखने के लिए, कृपया [यह पोस्ट] देखें (http://www.davestone.net/blog/post/The-enum-constant-reference-cannot -be-योग्य-in-a-case-label.aspx) – rekaszeru