获取给定Enum值的Enum名称的Java

如何获得给定其值的Java Enumtypes的名称?

我已经写了一个特定的枚举types的代码,我可以使它更通用?

枚举types:

public enum Category { APPLE("3"), ORANGE("1"), GRAPE("GRAPE"), BANANA("Banana"); private final String identifier; /** * Constructor. * * @param identifier * - identfier. */ private Category(String identifier) { this.identifier = identifier; } /** * {@inheritDoc} */ public String toString() { return identifier; } public static String getEnumNameForValue(Object value){ Category[] values = Category.values(); String enumValue = null; for(Category eachValue : values) { enumValue =eachValue.toString(); if (enumValue.equals(value)) { return eachValue.name(); } } return enumValue; } } 

您应该通过调用name()方法来replacegetEnumNameForValue

尝试下面的代码

 public enum SalaryHeadMasterEnum { BASIC_PAY("basic pay"), MEDICAL_ALLOWANCE("Medical Allowance"); private String name; private SalaryHeadMasterEnum(String stringVal) { name=stringVal; } public String toString(){ return name; } public static String getEnumByString(String code){ for(SalaryHeadMasterEnum e : SalaryHeadMasterEnum.values()){ if(code == e.name) return e.name(); } return null; } } 

现在你可以使用下面的代码来检索Enum by Value

 SalaryHeadMasterEnum.getEnumByString("Basic Pay") 

使用下面的代码来获得ENUM作为string

 SalaryHeadMasterEnum.BASIC_PAY.name() 

使用下面的代码来获取string值的枚举

 SalaryHeadMasterEnum.BASIC_PAY.toString() 

试试下面的代码

  @Override public String toString() { return this.name(); } 

这里是下面的代码,它将从枚举值返回枚举名称。

 public enum Test { PLUS("Plus One"), MINUS("MinusTwo"), TIMES("MultiplyByFour"), DIVIDE( "DivideByZero"); private String operationName; private Test(final String operationName) { setOperationName(operationName); } public String getOperationName() { return operationName; } public void setOperationName(final String operationName) { this.operationName = operationName; } public static Test getOperationName(final String operationName) { for (Test oprname : Test.values()) { if (operationName.equals(oprname.toString())) { return oprname; } } return null; } @Override public String toString() { return operationName; } } public class Main { public static void main(String[] args) { Test test = Test.getOperationName("Plus One"); switch (test) { case PLUS: System.out.println("Plus....."); break; case MINUS: System.out.println("Minus....."); break; default: System.out.println("Nothing.."); break; } } }