मैं प्रलेखन और स्रोत कोड को देख रहा था, क्योंकि मैं निश्चित होना चाहता था कि मान() हमेशा उस क्रम में एक सरणी वापस कर देगा जिसमें एनम मान घोषित किए गए हैं। बाहर निकलता है, यह in the documentation है जहां तक मैं कह सकता हूं।कहां से आता है Enum.values ()?
मैंने एनम कक्षा के लिए स्रोत कोड की जांच की, और कोई भाग्य नहीं (there is a related, private "getValues" method)।
तो मेरा अनुमान है कि यह है कि कुछ संकलक/दुभाषिया-foo पहले से ही एक वर्ग है कि Enum की तरह एक घोषणा से बाहर फैली हुई है बनाने के लिए चल रहा है:
public static enum MyEnum
तो मानों() भी स्थिर एक में अनुवाद किया है संकलन के दौरान हार्डकोडेड सरणी? या यह वास्तव में रनटाइम पर एक विधि है, और यदि हां, तो यह कहां परिभाषित किया गया है?
यदि आप बहुत अधिक परवाह करते हैं, तो शायद इसका मतलब है कि अगर आपके एनम घोषणा में आप सामान लेते हैं तो कुछ तोड़ देगा। यह वास्तव में नाजुक है। तो मैं कहूंगा कि अगर आप परवाह है, तो शायद आपके पास एक अजीब डिजाइन है। यह आपके लिए क्यों मायने रखता है कि वे क्रम में हैं? –
+1 सिर्फ शीर्षक के लिए। – Zoe
@ मार्क पीटर्स - क्योंकि मैं कई स्थानों पर आदेशित मेनू आइटम के लिए enums का उपयोग कर रहा हूँ। निश्चित रूप से, मैं कुछ प्रकार के ऑर्डरिंग फ़ंक्शन बना सकता हूं जो उन्हें कुछ क्रम में वापस कर देता है ... लेकिन क्यों? यदि मैं उन्हें स्थानांतरित करता हूं तो यह तोड़ नहीं जाएगा, यह केवल ऐप में प्रस्तुत किए गए क्रम को बदल देगा। – DougW