枚举值来自其名称

时间:2014-07-04 14:14:14

标签: java reflection enums

例如,我有这个枚举:

public enum MyEnum {
   ONE, TWO, THREE
}

我希望得到相同的结果,方法是通过将其名称作为某个方法参数传递,以某种方式调用MyEnum.values()方法,例如getEnumValues(String enumName)。 我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

如果您在编译时不知道枚举类是什么(您只是在字符串中有名称),那么您可以使用反射:

String enumClassName = "com.something.MyEnum";

Class<?> enumClass = Class.forName(enumClassName);
Object[] enumConstants = enumClass.getEnumConstants();

答案 1 :(得分:0)

为什么不简单地使用enum的valueOf(...)方法?它已经做了你想要的。

MyEnum myEnum = MyEnum.value(testString.toUpperCase());

答案 2 :(得分:0)

E val = Enum.valueOf(E.class, str);

E val = E.valueOf(str);

有关枚举类型上提供的默认方法的更多信息,请参见here