I have defined my Enums like this.
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;
}
}
What should be the easiest way to get a key-value pair form the enum values?
The output map i want to create should be like this
key = Enum(example:- HOST)
value = Host
The map I want do define is
Map<String, String> constansts = new HashMap<String, String>();
Ans: What I Did
I have created a Generic Method to access any enum and change values from that to a Map. I got this IDEA, form a code fragment found at here in any other thread.
public static <T extends Enum<T>> Map<String, String> getConstantMap(
Class<T> klass) {
Map<String, String> vals = new HashMap<String, String>(0);
try {
Method m = klass.getMethod("values", null);
Object obj = m.invoke(null, null);
for (Enum<T> enumval : (Enum<T>[]) obj) {
vals.put(enumval.name(), enumval.toString());
}
} catch (Exception ex) {
// shouldn't happen...
}
return vals;
}
Now, After this all I have to do is call this method with all the enum constructs and i am Done.
One More thing
To get This done i have to orverride the toString Method like this
public String toString() {
return name;
}
Thanks.
Provided you need to map from the textual values to the enum instances:
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);
or a more generic approach:
for (UserType userType : UserType.values()) {
map.put(userType.getName(), userType);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With