有没有一种方法可以从枚举值获取枚举类型?

3

What i mean by that is suppose

Enum xyzType {

    A,
    B,
    C,
    D
}

我知道通过执行 xyzType.C.ordinal() 可以获取C的值,其值为2。假设我只有2,我想要获取枚举类型C。我似乎在枚举API中找不到任何可以实现这一点的东西。我希望不用编写一个巨大的switch语句来比较每个序数值并返回枚举。有更好的方法吗?


жӮЁжҳҜжҢҮжһҡдёҫзұ»еһӢxyzTypeпјҢиҝҳжҳҜжһҡдёҫе®һдҫӢCзҡ„xyzTypeзұ»еһӢпјҹ - chrylis -cautiouslyoptimistic-
1个回答

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];
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接