有没有办法从枚举值中获取枚举类型?

时间:2013-08-02 16:07:38

标签: java

我的意思是假设

Enum xyzType {

    A,
    B,
    C,
    D
}

我知道我可以通过xyzType.C.ordinal()得到序数为C的值,即2。 假设我只有2,我会得到枚举类型C.我似乎无法在enum API中找到任何可以执行此操作的内容。我不希望有一个巨大的switch语句来比较每个序数值并返回枚举。有没有比这更好的了?

1 个答案:

答案 0 :(得分: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];
    }
}