我的意思是假设
Enum xyzType {
A,
B,
C,
D
}
我知道我可以通过xyzType.C.ordinal()得到序数为C的值,即2。 假设我只有2,我会得到枚举类型C.我似乎无法在enum API中找到任何可以执行此操作的内容。我不希望有一个巨大的switch语句来比较每个序数值并返回枚举。有没有比这更好的了?
答案 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];
}
}