नहीं, आप नहीं कर सकते। यदि आप एनम की परिभाषा को देखते हैं, तो इसके उदाहरण अंतिम हैं और विस्तारित नहीं किए जा सकते हैं। यह समझ में आता है अगर आप एक परिमित, अंतिम मानों के सेट के रूप में enums समझते हैं।
वहाँ एक अंक (एक वाक्यात्मक विरूपण साक्ष्य) जो द्विआधारी, दशमलव, हेक्स या जो कुछ भी है, और वास्तविक अर्थ संख्या हो सकता है के बीच एक अंतर है, संख्यात्मक इकाई संदर्भ में एक अंक से वाक्य रचना में प्रतिनिधित्व (आधार प्रणाली ।)
अपने उदाहरण में, आप क्या जरूरत है कानूनीका प्रतिनिधित्व syntatic अंकों के (दशमलव अंक और अक्षर प्रतीकों को निर्दिष्ट
- enums हैहेक्साडेसिमल; जो है, enum टोकन, और
- कक्षाएं व्यवहार (या व्याकरण) को निर्दिष्ट वाक्य रचना एक अंक के रूप में कार्य करता है (अंक [वाक्यात्मक] enums का प्रयोग करके) का प्रतिनिधित्व करने के लिए आवश्यक।
यही है कि आपके पास टोकन या प्रतीकों और व्याकरण/व्यवहार हैं जो इंगित करते हैं कि टोकन की एक धारा किसी दिए गए आधार के तहत एक संख्या का प्रतिनिधित्व करती है या नहीं।
लेकिन यह टेंगेंट से थोड़ी दूर है (और जैसा कि आपने कहा था, यह उदाहरण के लिए सिर्फ एक उदाहरण था)। विस्तारित enums पर वापस जा रहे हैं ...
... यो नहीं कर सकते हैं और आपको नहीं करना चाहिए। Enums का मतलब उन चीजों का प्रतिनिधित्व करने के लिए नहीं है जिन्हें बढ़ाया जा सकता है। वे स्थिरस्थिर मान का प्रतिनिधित्व करने के लिए हैं। ऐसी चीजें हैं जो विरासत में नहीं हैं।
इसके अलावा, विस्तार की खातिर विस्तार के जाल में गिर नहीं है या अपने कोड या मॉडल में एक संरचना के लिए मजबूर करने की कोशिश कर के लिए।
यह मानों का एक सेट दूसरे के विस्तार को बनाने के लिए समझ में आता है। अक्सर नहीं, यह नहीं है।व्यवहार या जटिल संरचना का पुन: उपयोग करने के लिए विरासत का उपयोग करें, न केवल उस डेटा से जो उसमें से जुड़े गैर-पुन: प्रयोज्य व्यवहार के साथ कोई संरचना नहीं है।
स्रोत
2010-04-15 03:17:36
किया? – bmargulies
उत्तर 'नहीं' है (विवरण के लिए नीचे दिए गए उत्तरों देखें)। जोश बलोच की पुस्तक * प्रभावी जावा * इस के लिए एक अच्छा विवरण और वैकल्पिक हल है। – David
मैंने कोशिश की, इसलिए मैंने यहां पोस्ट किया! – CaseyB