26

重複の可能性:
enum.values() - 決定論的に返される列挙型の順序です

私は以下のような列挙型を持っています:-

enum Direction {

    EAST,
    WEST,
    NORTH,
    SOUTH
}

方向列挙型で言うとvalues()、値の順序は常に同じになります。つまり、値の順序は常に以下の形式になります。

EAST,WEST,NORTH,SOUTH

または、注文はいつでも変更できます。

4

4 に答える 4

41

各型には、列挙型のすべての値を宣言された順序で含む配列を返すEnum静的メソッドがあります。values

このメソッドは、列挙型の値を反復処理するために、for-each ループと組み合わせて一般的に使用されます。

Java 7 仕様ドキュメント リンク: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2

于 2012-08-10T09:34:09.320 に答える
7

そのメソッドの動作は、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();
于 2012-08-10T09:42:06.613 に答える
1

前の2つの回答が言うように、順序は宣言の順序です。ただし、この順序 (または列挙型の序数) に依存することはお勧めできません。宣言の順序を変更したり、宣言の途中で新しい要素を追加したりすると、コードの動作が予期せず変化する可能性があります。決まった順序がある場合は、実装しComparableます。

于 2012-08-10T09:54:25.953 に答える
1

Enums変数の値を、列挙されたリスト内の唯一の宣言された値の 1 つに制限するために使用されます。

これらの値はpublic static final、つまり (その特定の列挙型の定数オブジェクト) であり、変数をこれらのオブジェクトにマッピングするには、その順序が非常に重要です。

values()は、static method of Enum常に同じ順序で値を返します。

于 2012-08-10T09:55:53.920 に答える