Je voudrais Rechercher un enum de sa valeur de chaîne (ou éventuellement une autre valeur). J’ai essayé le code suivant, mais elle ne permet pas statique, initialisers. Y a-t-il un moyen simple ?
Réponses
Trop de publicités?Utilisation du `` méthode qui est créé automatiquement pour chaque Enum.
Pour des valeurs arbitraires commencer avec :
Seulement passer plus tard à mise en œuvre du plan si votre profileur vous le dit.
Je sais que c’est une itération sur toutes les valeurs, mais avec seulement 3 valeurs enum, qu'il vaut la peine tout autre effort, en fait, sauf si vous avez un grand nombre de valeurs, que je ne voudrais pas déranger avec une carte ce sera assez rapide.
Réponse de @Lyle est assez dangereux, et je l’ai vu ne travailler pas surtout si vous faites l’enum une classe interne statique. Au lieu de cela, j’ai utilisé quelque chose comme ça qui va charger les cartes de BootstrapSingleton avant les enums.
Me charge tout d’abord :
Maintenant le charger dans le constructeur de l’enum :
Si vous avez un enum interne, que vous pouvez simplement définir la carte ci-dessus la définition enum et qui (en théorie) devrait obtenir chargés avant.
Peut-être, prendre un coup d'oeil à ce. Son travail pour moi.
Le but de cette opération est à la recherche de 'ROUGE' avec '/red_color'.
La déclaration d'une static map
et le chargement de la enum
s en une seule fois, apporterait des avantages de performance si l' enum
s sont nombreux.
public class Mapper {
public enum Maps {
COLOR_RED("/red_color", "RED");
private final String code;
private final String description;
private static Map<String, String> mMap;
private Maps(String code, String description) {
this.code = code;
this.description = description;
}
public String getCode() {
return name();
}
public String getDescription() {
return description;
}
public String getName() {
return name();
}
public static String getColorName(String uri) {
if (mMap == null) {
initializeMapping();
}
if (mMap.containsKey(uri)) {
return mMap.get(uri);
}
return null;
}
private static void initializeMapping() {
mMap = new HashMap<String, String>();
for (Maps s : Maps.values()) {
mMap.put(s.code, s.description);
}
}
}
}
S'il vous plaît mettre dans votre opinons.