Converti stringa nel valore Enum equivalente


Risposte:


220

Spero che tu capisca, java.util.Enumerationè diverso dai tipi Java 1.5 Enum .

Puoi semplicemente usare YourEnum.valueOf("String")per ottenere il tipo enum equivalente.

Quindi, se il tuo enum è definito così:

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY
}

Potresti farlo:

String day = "SUNDAY";

Day dayEnum = Day.valueOf(day);


18

Supponendo che tu usi le enumerazioni Java 5 (che non è così certo dato che menzioni la vecchia Enumerationclasse), puoi usare il valueOfmetodo della java.lang.Enumsottoclasse:

MyEnum e = MyEnum.valueOf("ONE_OF_CONSTANTS");

8

Usa il metodo statico valueOf(String)definito per ciascuno enum.

Ad esempio se enum MyEnumhai puoi direMyEnum.valueOf("foo")


4

Potrei aver sovra-ingegnerizzato la mia soluzione senza rendermi conto che Type.valueOf("enum string")effettivamente esisteva.

Immagino che dia un controllo più granulare, ma non sono sicuro che sia davvero necessario.

public enum Type {
    DEBIT,
    CREDIT;

    public static Map<String, Type> typeMapping = Maps.newHashMap();
    static {
        typeMapping.put(DEBIT.name(), DEBIT);
        typeMapping.put(CREDIT.name(), CREDIT);
    }

    public static Type getType(String typeName) {
        if (typeMapping.get(typeName) == null) {
            throw new RuntimeException(String.format("There is no Type mapping with name (%s)"));
        }
        return typeMapping.get(typeName);
    }
}

Immagino che tu stia scambiando IllegalArgumentExceptionper RuntimeException(o qualsiasi eccezione desideri lanciare) che potrebbe potenzialmente ripulire il codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.