2012-08-10 82 views

回答

14

Enum每個類型具有一個靜態values方法,該方法返回一個包含它們被聲明的順序所有枚舉類型的值的數組。

此方法通常與for-each循環結合使用以遍歷枚舉類型的值。

Java 7的規格說明文件鏈接: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2

+3

+1如果Java 5.0是EOL,我建議使用Java 7引用。 – 2012-08-10 09:36:51

+0

@PeterLawrey完成。 – 2012-08-10 10:02:22

+2

對於下來的選民,如果你可以留下一個改善答案的建議,我會很樂意這樣做。 – 2012-08-10 10:06:38

2

該方法的行爲在Java Language Specification #8.9.2定義:

另外,如果E是枚舉類型的名稱,則該類型有以下隱式聲明的靜態方法:

/** 
* 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回答說,這個命令就是聲明的順序。但是,依賴這個命令(或枚舉的序號)並不是一個好習慣。如果有人重新排列聲明或在聲明的中間添加一個新元素,代碼的行爲可能會意外改變。 如果有一個固定的訂單,我會執行Comparable

1

Enums用於將變量的值限制爲枚舉列表中唯一聲明的值之一。

這些值是public static final,即(該特定枚舉類型的常量對象)和其順序對於將變量映射到這些對象非常重要。

values()static method of Enum,其中始終以相同的順序返回值。

相關問題