से निरंतर अभिव्यक्ति क्या एक enum को निरंतर अभिव्यक्ति में परिवर्तित करने का कोई तरीका है? मैं अपने स्विच ऑपरेटर एक enum के मूल्यों के बीच चयन करना चाहते हैं, लेकिन मैं एक संकलन त्रुटि "मामले भाव स्थिर भाव होना चाहिए" मिल गया, तो मैं एक चर में यह घोषित करने की कोशिश:एनम
final int REG = MyEnum.REG.getIndex().intValue();
switch (service.getIndex()) {
case REG:
लेकिन मैं अभी भी एक ही त्रुटि प्राप्त करें। ओरेकल के दस्तावेज़ के अनुसार http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28
एक संकलन समय निरंतर अभिव्यक्ति है एक अभिव्यक्ति है कि अचानक पूरा नहीं है और है केवल का उपयोग कर बना निम्नलिखित आदिम प्रकार या एक स्ट्रिंग के एक मूल्य दर्शाने:
Literals • आदिम प्रकार और प्रकार के शाब्दिक प्रकार स्ट्रिंग
तो यह काम नहीं कर रहा है क्योंकि मैं एक शाब्दिक उपयोग नहीं कर रहा हूं। मुझे लगता है कि मुझे इसे घोषित करना होगा:
final int REG = 8;
लेकिन यह enum को जोड़ने के लिए बेहतर होगा। ऐसा करने का कोई रास्ता नहीं है?
संपादित
बाहर कर देता है मैं किसी भी अंतिम चर का उपयोग करने की जरूरत नहीं। यह उतना आसान है जितना:
switch (service) {
case REG:
यह तब तक नहीं हुआ जब तक मैंने एंड्रिया की टिप्पणी नहीं देखी। आपके उत्तरों के लिए धन्यवाद।
मुझे लगता है कि 'service.getIndex()' 'रिटर्न पूर्णांक ', है ना? क्या आप इसे संशोधित कर सकते हैं ताकि यह आपके enum को वापस कर सके? –
जावा 1.6 तक आप 'स्विच-केस' में 'स्ट्रिंग' का उपयोग नहीं कर सकते हैं, लेकिन आप इसे जावा 7 में उपयोग कर सकते हैं। FYI – Joshi