私は以下のような列挙型を持っています:-
enum Direction {
EAST,
WEST,
NORTH,
SOUTH
}
方向列挙型で言うとvalues()
、値の順序は常に同じになります。つまり、値の順序は常に以下の形式になります。
EAST,WEST,NORTH,SOUTH
または、注文はいつでも変更できます。
私は以下のような列挙型を持っています:-
enum Direction {
EAST,
WEST,
NORTH,
SOUTH
}
方向列挙型で言うとvalues()
、値の順序は常に同じになります。つまり、値の順序は常に以下の形式になります。
EAST,WEST,NORTH,SOUTH
または、注文はいつでも変更できます。
各型には、列挙型のすべての値を宣言された順序で含む配列を返すEnum
静的メソッドがあります。values
このメソッドは、列挙型の値を反復処理するために、for-each ループと組み合わせて一般的に使用されます。
Java 7 仕様ドキュメント リンク: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2
そのメソッドの動作は、Java 言語仕様 #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();
前の2つの回答が言うように、順序は宣言の順序です。ただし、この順序 (または列挙型の序数) に依存することはお勧めできません。宣言の順序を変更したり、宣言の途中で新しい要素を追加したりすると、コードの動作が予期せず変化する可能性があります。決まった順序がある場合は、実装しComparable
ます。
Enums
変数の値を、列挙されたリスト内の唯一の宣言された値の 1 つに制限するために使用されます。
これらの値はpublic static final
、つまり (その特定の列挙型の定数オブジェクト) であり、変数をこれらのオブジェクトにマッピングするには、その順序が非常に重要です。
values()
は、static method of Enum
常に同じ順序で値を返します。