给定枚举值的 Java 获取枚举名称

2022-08-31 15:38:48

给定 Java 枚举类型的值,如何获取其名称?

我有以下适用于特定枚举类型的代码,我可以使其更通用吗

public enum Category {

    APPLE("3"), 
    ORANGE("1"), 

    private final String identifier;

    private Category(String identifier) {
        this.identifier = identifier;
    }

    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.equalsIgnoreCase(value)) {
                return eachValue.name();
            }
        }
        return enumValue;
    }
}

答案 1

您应该通过调用 name() 方法替换您的。getEnumNameForValue


答案 2

试试下面的代码

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(e.name.equals(code)) return e.name();
        }
        return null;
    }
}

现在,您可以使用下面的代码按值检索枚举

SalaryHeadMasterEnum.getEnumByString("Basic Pay")

使用以下代码将 ENUM 作为字符串获取

SalaryHeadMasterEnum.BASIC_PAY.name()

使用以下代码获取枚举的字符串值

SalaryHeadMasterEnum.BASIC_PAY.toString()