Konvertieren Sie den String in den entsprechenden Enum-Wert


Antworten:


219

Ich hoffe, Sie erkennen, java.util.Enumerationunterscheidet sich von den Java 1.5 Enum- Typen.

Sie können einfach verwenden YourEnum.valueOf("String"), um den entsprechenden Aufzählungstyp zu erhalten.

Wenn also Ihre Aufzählung wie folgt definiert ist:

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

Sie könnten dies tun:

String day = "SUNDAY";

Day dayEnum = Day.valueOf(day);


18

Angenommen, Sie verwenden Java 5-Aufzählungen (was nicht so sicher ist, da Sie die alte EnumerationKlasse erwähnen ), können Sie die valueOfMethode der java.lang.EnumUnterklasse verwenden:

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

8

Verwenden statische Methode valueOf(String)für jede definierte enum.

Zum Beispiel, wenn Sie haben enum MyEnum, können Sie sagenMyEnum.valueOf("foo")


4

Ich hätte meine eigene Lösung möglicherweise überarbeitet, ohne zu bemerken, dass sie Type.valueOf("enum string")tatsächlich existiert.

Ich denke, es gibt eine detailliertere Kontrolle, aber ich bin mir nicht sicher, ob es wirklich notwendig ist.

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

Ich denke, Sie tauschen IllegalArgumentExceptiongegen RuntimeException(oder welche Ausnahme Sie auch immer werfen möchten), die möglicherweise Code bereinigen könnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.