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