3

それが意味することは、

Enum xyzType {

    A,
    B,
    C,
    D
}

xyzType.C.ordinal() を実行することで、C の序数の値を取得できることはわかっています。これは 2 です。2 つしかない場合、列挙型 C を取得する必要があります。これを行うenum API。各序数値を比較して列挙型を返すために、巨大な switch ステートメントを使用しないことをお勧めします。これを行う方が良いですか?

4

1 に答える 1

13

最も簡単な方法は次のとおりです。

xyzType xyz = xyzType.values()[ordinalValue];

ただし、これは毎回新しい配列を作成します。別の方法は、列挙内にキャッシュすることです。

public enum Xyz {
    Foo, Bar;

    private static final Xyz[] VALUES = values();

    public Xyz fromOrdinal(int ordinal) {
        return VALUES[ordinal];
    }
}
于 2013-08-02T16:08:38.220 に答える