我喜欢这样:
public enum Enum2
{
ONE,TWO,THREE;
}
我可以列出所有值:
public static void main(String... args)
{
for (Enum2 e : Enum2.values())
{
System.out.println(e);
}
}
如果我只有字符串名称Enum?
,是否可以列出值?String enum_name="Enum2";
E.g。如果在某些逻辑中:
if (a>b)
{
enum_name="EnumA";
}
else
{
enum_name="EnumB";
}
在我收到enum的字符串名称后 - 我可以列出所有值。
答案 0 :(得分:2)
Class<?> enumClazz = Class.forName("com.mycompany.Enum2");
for (Enum<?> e : ((Class<? extends Enum<?>>)enumClazz).getEnumConstants()) {
System.out.println(e.name()); // The variable "e" would be Enum2.ONE, etc
}
感谢@Harry帮助我做到这一点。
答案 1 :(得分:1)
你的问题不太清楚,但这是你可能想做的事情
Class<?> cls = Class.forName("EnumName");
if (cls.isEnum()) {
Field[] flds = cls.getDeclaredFields();
//-- your logic for fields.
}
您可以使用:Class.getEnumConstants()
。有关详情,请参阅this。
答案 2 :(得分:-1)
是的,
Enum2.EnumA.toString();