有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java枚举从字符串名称接收值

我有以下几点:

public enum Enum2 
{
    ONE,TWO,THREE;
}

我可以列出所有值,如:

public static void main(String... args)
{
   for (Enum2 e : Enum2.values()) 
   {
        System.out.println(e);
   }

}

如果我只有枚举的字符串名,是否可以列出值

String enum_name="Enum2";

例如,如果在某些逻辑中,例如:

if (a>b) 
{
enum_name="EnumA";
} 
else
{
enum_name="EnumB";
}

在我收到enum的字符串名之后,我可以列出所有的值


共 (3) 个答案

  1. # 1 楼答案

    是的,有

    Enum2.EnumA.toString();
    
  2. # 2 楼答案

    你的问题不太清楚,但这是你可能想做的

     Class<?> cls = Class.forName("EnumName");
     if (cls.isEnum()) {
       Field[] flds = cls.getDeclaredFields();
       //  your logic for fields.
     }
    

    您可以使用:^{}。更多信息请参见this

  3. # 3 楼答案

    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帮我搞定这件事