我的意思是假设

Enum xyzType {

    A,
    B,
    C,
    D
}

我知道我可以通过执行xyzType.C.ordinal()来获得序数C的值,即2。
假设我只有2个,我将得到枚举类型C。我似乎在枚举API中找不到能做到这一点的任何东西。我不希望没有庞大的switch语句来比较每个序数值并返回枚举。有更好的办法吗?

最佳答案

最简单的方法是:

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

但是,这将每次创建一个新数组。一种替代方法是将其缓存在枚举中:
public enum Xyz {
    Foo, Bar;

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

    public Xyz fromOrdinal(int ordinal) {
        return VALUES[ordinal];
    }
}

08-06 10:58