के तहत enum के साथ स्विच स्टेटमेंट का उपयोग करके सबसे पहले मैं यह कहूंगा कि मैं सी # में enums से अधिक परिचित हूं और ऐसा लगता है कि जावा में enums एक काफी गड़बड़ है।जावा: सबक्लास
जैसा कि आप देख सकते हैं, मैं अपने अगले उदाहरण में एक स्विच स्टेटमेंट @ एनम्स का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे हमेशा कोई त्रुटि नहीं मिलती है कि मैं क्या कर रहा हूं।
त्रुटि मैं प्राप्त है:
योग्य मामला लेबल
SomeClass.AnotherClass.MyEnum.VALUE_A
अयोग्य enum निरंतर के साथ प्रतिस्थापित किया जाना चाहिएVALUE_A
बात मैं काफी त्रुटि को समझें लेकिन मैं है enum केवल VALUE_A नहीं लिख सकता क्योंकि enum किसी अन्य उप-वर्ग में स्थित है। क्या इस समस्या को हल करने का कोई तरीका है? और यह जावा में क्यों हो रहा है?
//Main Class
public class SomeClass {
//Sub-Class
public static class AnotherClass {
public enum MyEnum {
VALUE_A, VALUE_B
}
public MyEnum myEnum;
}
public void someMethod() {
MyEnum enumExample //...
switch (enumExample) {
case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
//..
break;
}
}
}
}
दिखाया darrengorman टिप्पणी की, जावा [ 'Enum'] (http://docs.oracle.com/javase/8/ के रूप में डॉक्स/एपीआई/जावा/लैंग/एनयूएम.html) * बेहद आसान हैं जब आप उन्हें लटका लेंगे - बिल्कुल गड़बड़ नहीं। वे अन्य प्लेटफार्मों पर देखे गए सरल enums (केवल एक लेबल वाले पूर्णांक मान) से अधिक लचीला और व्यावहारिक हैं। [ओरेकल ट्यूटोरियल] देखें (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)। अनुकूलित 'सेट' /' मानचित्र 'कार्यान्वयन की खोज करें: ['EnumSet'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html) और [' EnumMap'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html)। –
जब आप केस स्टेटमेंट अर्हता प्राप्त करने का प्रयास करते हैं; एक तरह से, आप यह कहने की कोशिश कर रहे हैं कि मैं एक ही स्विच स्टेटमेंट के भीतर विभिन्न प्रकार के enums (केवल एक ही enum प्रकार नहीं) मिश्रण कर सकते हैं। जावा ने इस दृष्टिकोण के साथ इसे रोक दिया है जैसा कि यहां चर्चा की गई है http://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html – lkamal