Le moyen le plus simple d'obtenir une Enum dans la paire de Key Value
J'ai défini mes Énumérations de ce genre.
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;
}
}
Ce qui devrait être la façon la plus simple d'obtenir une paire clé-valeur la forme des valeurs enum?
La sortie de la carte que je veux créer devrait être comme ceci
key = Enum(example:- HOST)
value = Host
La carte que je veux faire est de définir
Map<String, String> constansts = new HashMap<String, String>();
Réponse: Ce Que J'Ai Fait
J'ai créé une Méthode Générique pour accéder à tout enum et de modifier les valeurs de celui d'une Carte. J'ai eu cette IDÉE, la forme d'un fragment de code trouvé ici, dans n'importe quel autre 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;
}
Maintenant, Après tout ce que j'ai à faire est d'appeler cette méthode avec tous les enum constructions et je suis Fait.
Une chose de Plus
Obtenir Ce fait je orverride la Méthode toString comme ce
public String toString() {
return name;
}
Grâce.
source d'informationauteur vijay.shad | 2010-03-08
Vous devez vous connecter pour publier un commentaire.
Fourni vous avez besoin d'une carte textuelle valeurs de l'enum instances:
ou une approche plus générique:
Vous pouvez utiliser les valeurs() la méthode sur les enum, vous donnant toutes les combinaisons possibles, et les mettre dans une carte à l'aide de l'itérateur.
Je pense que le eaiest méthode pour utiliser un Enum comme une clé dans une carte à l'aide d'un EnumMap http://download.oracle.com/javase/1,5.0/docs/api/java/util/EnumMap.html