61 votes

Java obtient le nom Enum étant donné la valeur Enum

Comment puis-je obtenir le nom d'un type Java Enum compte tenu de sa valeur ?

J'ai le code suivant qui fonctionne pour un type Enum particulier , puis-je le rendre plus générique ?

 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;
    }
}

52voto

Riduidel Points 13456

Vous devez remplacer votre getEnumNameForValue par un appel à la méthode name()

42voto

prashant thakre Points 519

Essayez le code ci-dessous

 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;
    }
}

Vous pouvez maintenant utiliser le code ci-dessous pour récupérer l'énumération par valeur

 SalaryHeadMasterEnum.getEnumByString("Basic Pay")

Utilisez le code ci-dessous pour obtenir ENUM en tant que chaîne

 SalaryHeadMasterEnum.BASIC_PAY.name()

Utilisez le code ci-dessous pour obtenir la chaîne Value pour enum

 SalaryHeadMasterEnum.BASIC_PAY.toString()

5voto

Javaci Points 61

Essayez, le code suivant ..

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

2voto

Do It Points 113

Voici le code ci-dessous, il renverra le nom Enum à partir de la valeur Enum.

 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;
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X