2012-08-10 12 views
10

संभव डुप्लिकेट:
enum.values() - is an order of returned enums deterministicहोगा enum.values ​​के लिए आदेश() हमेशा एक ही

मैं नीचे की तरह एक enum कुछ है: -

enum Direction { 

    EAST, 
    WEST, 
    NORTH, 
    SOUTH 
} 

तो मैं दिशा-निर्देश पर values() कहें, फिर मूल्य का क्रम हर समय समान रहेगा। मेरा मतलब है कि मूल्यों का क्रम हमेशा निम्न प्रारूप में होगा:

EAST,WEST,NORTH,SOUTH 

या आदेश किसी भी समय बदल सकता है।

उत्तर

14

प्रत्येक Enum प्रकार एक स्थिर values विधि है कि क्रम में वे घोषित किया गया है में enum प्रकार के मूल्यों के सभी युक्त एक सरणी देता है।

इस विधि का उपयोग आमतौर पर प्रत्येक लूप के साथ संयोजन में किया जाता है ताकि एक समेकित प्रकार के मानों पर पुनरावृत्ति हो सके।

जावा 7 युक्ति दस्तावेज़ीकरण लिंक: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2

+3

+1 यदि आप Java 5.0 के रूप में कर सकते हैं तो जावा 7 संदर्भों का उपयोग करने का सुझाव देता हूं। –

+0

@ पीटर Lawrey किया। –

+2

नीचे मतदाता के लिए, यदि आप उत्तर को बेहतर बनाने के लिए एक सुझाव छोड़ सकते हैं, तो मैं खुशी से ऐसा करूँगा। –

2

कि विधि के व्यवहार Java Language Specification #8.9.2 में परिभाषित किया गया है:

इसके अलावा, यदि ई एक enum प्रकार का नाम है, तो उस प्रकार है निम्नलिखित परोक्ष घोषित स्थिर तरीके:

/** 
* Returns an array containing the constants of this enum 
* type, in the order they're declared. This method may be 
* used to iterate over the constants as follows: 
* 
* for(E c : E.values()) 
*  System.out.println(c); 
* 
* @return an array containing the constants of this enum 
* type, in the order they're declared 
*/ 
public static E[] values(); 
1

पिछले 2 जवाब के रूप में एस कहते हैं, आदेश घोषणा का आदेश है। हालांकि, इस आदेश (या enum के ordinal पर) पर भरोसा करना अच्छा अभ्यास नहीं है। अगर कोई घोषणा की सीमा में संशोधन करता है या घोषणा के बीच में एक नया तत्व जोड़ता है, तो कोड का व्यवहार अप्रत्याशित रूप से बदल सकता है। यदि कोई निश्चित आदेश है, तो मैं Comparable लागू करूंगा।

1

Enums चर के मूल्यों को प्रतिबंधित सूची में केवल घोषित मूल्यों में से एक में प्रतिबंधित करने के लिए उपयोग किया जाता है।

ये मान public static final हैं, यानी (उस विशिष्ट एनम प्रकार की निरंतर वस्तुएं), और इन ऑब्जेक्ट्स के चर को मैप करने के लिए इसका ऑर्डर बहुत महत्वपूर्ण है।

values()static method of Enum है, जो हमेशा एक ही क्रम में मान देता है।

संबंधित मुद्दे