3 votes

Enum : obtenir la liste des clés

J'ai hâte d'utiliser la bibliothèque "google-api-translate-java".
Dans lequel il y a un Langue classe. Il s'agit d'une énumération permettant de fournir le nom de la langue et d'obtenir sa valeur pour Google Translate.

Je peux facilement obtenir toutes les valeurs avec :

for (Language l : values()) {
    // Here I loop on one value
}

Mais ce que je voudrais obtenir, c'est une liste de tous les noms de clés (français, anglais, ...).
Existe-t-il une méthode du type "keys()" qui me permettrait de parcourir en boucle toutes les clés de l'enum ?

12voto

Jon Skeet Points 692016

Une alternative à Language.values() est d'utiliser EnumSet :

for (Language l : EnumSet.allOf(Language.class))
{
}

Ceci est utile si vous voulez l'utiliser dans une API qui utilise les interfaces de collections au lieu d'un tableau. (Cela évite également de créer le tableau au départ... mais il faut effectuer d'autres tâches à la place, bien sûr. Tout est question de compromis).

Dans ce cas particulier, values() est probablement plus approprié - mais il vaut la peine de connaître au moins l'existence de EnumSet .

EDIT : A en juger par un autre commentaire, vous avez des inquiétudes concernant toString() en cours d'exécution - appel name() au lieu de cela :

for (Language l : Language.values())
{
    String name = l.name();
    // Do stuff here
}

4voto

b_erb Points 8869

1voto

Oui - Si l'énumération est X, utilisez X.values(). Voir dans ce tutoriel .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X