给出以下定义:

public enum SampleEnum1 { Uno, Dos, Tres }
public enum SampleEnum2 { One, Two, Three, Four }


我需要两种方法来做到这一点:


给定整数2,如果将Dos应用于SampleEnum1,则返回Two,如果将SampleEnum2应用于One
给定值1,返回


实际上,我需要将枚举分类转换为枚举定义中的序号,反之亦然。

我不介意使用泛型,反射或其他任何方法,只要对任何枚举都可以使用相同的两种方法。

你有解决方案吗?

最佳答案

另一种方法是使用类似

public static <E etxends Enum<E>> E lookup(Class<E> eClass, int number) {
     return eClass.getEnumConstants()[number-1];
}

SampleEnum1 se1 = lookup(SampleEnum1.class, 2);


顺便说一句:您可以从零开始,这也将简化您的代码。

10-05 19:02