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

tad*_*ole 3 java

我的意思是假设

Enum xyzType {

    A,
    B,
    C,
    D
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过xyzType.C.ordinal()得到序数为C的值,假设我只有2,我会得到枚举类型C.我似乎找不到任何东西这样做的枚举API.我不希望有一个巨大的switch语句来比较每个序数值并返回枚举.这样做有好处吗?

Jon*_*eet 13

最简单的方法是:

xyzType xyz = xyzType.values()[ordinalValue];
Run Code Online (Sandbox Code Playgroud)

但是,这将每次创建一个新数组.另一种方法是将其缓存在枚举中:

public enum Xyz {
    Foo, Bar;

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

    public Xyz fromOrdinal(int ordinal) {
        return VALUES[ordinal];
    }
}
Run Code Online (Sandbox Code Playgroud)