2010-03-08 6 views
9

zu bekommen Ich habe meine Enums so definiert.Der einfachste Weg, um Enum in Key Value Paar

public enum UserType { 

    RESELLER("Reseller"), 

    SERVICE_MANAGER("Manager"), 

    HOST("Host"); 

    private String name; 

    private UserType(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

} 

Was sollte der einfachste Weg sein, ein Schlüssel/Wert-Paar aus den Enum-Werten zu erhalten?

Die Ausgangs Karte Ich möchte diese

key = Enum(example:- HOST) 
value = Host 

Die Karte definiere ich wollen schaffen wollen, ist

Map<String, String> constansts = new HashMap<String, String>(); 

Antwort: Was ich

Habe ich habe ein Generika erstellt Methode, um auf eine Enumeration zuzugreifen und Werte von dieser zu einer Map zu ändern. Ich habe diese Idee, ein Code-Fragment hier in einem anderen Thread gefunden.

Nun, danach muss ich nur diese Methode mit allen enum Konstrukten aufrufen und ich bin fertig.

Eine weitere Sache

Um dieses i getan haben die toString Methode wie diese

public String toString() { 
     return name; 
    } 

Dank orverride.

+0

wollen Sie das Enum oder die Zeichenfolge wollen den Schlüssel sein? – Carl

+0

statt all dieser Reflektion Zeug, können Sie einfach tun 'klass.getEnumConstants()' – user102008

Antwort

17

Vorausgesetzt, Sie müssen aus den Textwerte zu den Enum-Instanzen zur Karte:

Map<String, UserType> map = new HashMap<String, UserType>(); 
map.put(RESELLER.getName(), RESELLER); 
map.put(SERVICE_MANAGER.getName(), SERVICE_MANAGER); 
map.put(HOST.getName(), HOST); 

oder eine allgemeinere Ansatz:

for (UserType userType : UserType.values()) { 
    map.put(userType.getName(), userType); 
} 
+2

Dies ist die sehr harte Art und Weise. Gibt es kein Ding out-of-Box? Da muss etwas sein ........ –

+0

@ vijay.shad sehe mein Update. Wenn Sie in Ihrer Frage mehr Details angeben, erhöhen Sie die Chancen, genau das zu bekommen, wonach Sie suchen :-) –

+0

Es gibt keinen einfacheren Weg, den Ihnen Java gibt ... sorry – malaverdiere

11

Sie könnten die Werte() -Methode auf dem ENUM nutzen, geben Sie alle möglichen Kombinationen und setzen Sie diese in eine Karte mit dem Iterator.

Map<String, UserType> map = new HashMap<String, UserType>(); 
for (UserType userType : UserType.values()) { 
    map.put(userType.name(), userType); 
} 
Verwandte Themen