He definido mis enumeraciones de esta manera.La forma más fácil de obtener Enum en el par de valores clave
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;
}
}
¿Cuál debería ser la forma más fácil de obtener una pareja clave-valor de los valores enum?
El mapa de salida Quiero crear debe ser así
key = Enum(example:- HOST)
value = Host
El mapa Quiero do definir es
Map<String, String> constansts = new HashMap<String, String>();
Respuesta: Lo que hice
He creado un genérico Método para acceder a cualquier enumeración y cambiar los valores de eso a un Mapa. Obtuve esta IDEA, formé un fragmento de código que se encuentra aquí en cualquier otro hilo.
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;
}
Ahora, después de esto todo lo que tengo que hacer es llamar a este método con todas las construcciones de enumeración y he terminado.
una cosa más
para hacer esto tengo que orverride el método toString como esto
public String toString() {
return name;
}
Gracias.
¿Quieres que la enumeración o la cadena a ser la clave? – Carl
en lugar de todo eso de reflexión, puedes hacer 'klass.getEnumConstants()' – user102008