我的意思是假设
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];
}
}