3

我的意思是假设

Enum xyzType {

    A,
    B,
    C,
    D
}

我知道我可以通过执行 xyzType.C.ordinal() 来获得 C 的值,即 2。假设我只有 2,我会得到枚举类型 C。我似乎在可以做到这一点的枚举 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 回答