java - 从枚举值中获取枚举名称

标签 java enums

我已经阅读了很多关于如何使用 java 从 enum 的值中获取相应名称的信息,但似乎没有一个示例对我有用!怎么了?

public class Extensions {


    public enum RelationActiveEnum
    {
        Invited(0),
        Active(1),
        Suspended(2);

        private final int value;

        private RelationActiveEnum(final int value) {
            this.value = value;
        }
    }

}

在我使用的另一个类中:

        int dbValue = supp.ACTIVE;
        Extensions.RelationActiveEnum enumValue(dbValue);
        String stringName = enumValue.toString(); //Visible
        // OR
        int dbValuee = supp.ACTIVE;
        String stringValue = Enum.GetName(typeof(RelationActiveEnum), dbValue);

我应该工作,对吧?但它没有!!!!它告诉我 dbValue 不能转换为 RelationActiveEnum...

最佳答案

假设我们有:

public enum MyEnum {
  Test1, Test2, Test3
}

要获取枚举变量的名称,请使用 name() :

MyEnum e = MyEnum.Test1;
String name = e.name(); // Returns "Test1"

要从(字符串)名称中获取枚举,请使用 valueOf() :

String name = "Test1";
MyEnum e = Enum.valueOf(MyEnum.class, name);

如果您需要 integer 值来匹配枚举字段,请扩展枚举类:

public enum MyEnum {
  Test1(1), Test2(2), Test3(3);

  public final int value;

  MyEnum(final int value) {
     this.value = value;
  }
}

现在你可以使用了:

MyEnum e = MyEnum.Test1;
int value = e.value; // = 1

并使用整数值查找枚举:

MyEnum getValue(int value) {
  for(MyEnum e: MyEnum.values()) {
    if(e.value == value) {
      return e;
    }
  }
  return null;// not found
}

关于java - 从枚举值中获取枚举名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319232/

相关文章:

java - 被 FileNotFound 异常难倒

java - 具有相同哈希码的两个不相等的对象

java - 将 JRE 设置为使用 Windows 信任库,特别是用户的信任库

scala - 如何在 scala 枚举值中添加点

java - 让一个线程从共享列表中获取多个对象

java - 如何解决 : javax. servlet.ServletException : java. lang.NoClassDefFoundError: javax/xml/ws/soap/SOAPFaultException

java - Spring JPA - 枚举中枚举字段的默认值

java - 在枚举中模拟注入(inject)

ios - 使开关功能正常工作

c# - 将枚举作为字典集合中的键出现问题