Java enums – comment faire

Avec les enums (abréviation de enumeration, en français : énumération), Java vous offre la possibilité, en tant que programmeur, de définir des constantes prédéfinies pour vos variables. Cela est particulièrement utile lorsqu'une variable ne possède qu'un petit nombre d'états nommables.

Il peut s'agir par exemple de cartes à jouer (trèfle, pique, cœur, carreau) ou encore du nom du jour de la semaine.

  • Définir un type d'enum
  • Créer une variable enum
  • Exemple d'utilisation

Définir un type d'enum

Définir un enum pour les jours de la semaine avec la syntaxe suivante :

public enum WeekDay
{
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
WeekDay
est ici l'identifiant du enum. Ce nom sera également utilisé plus tard pour déclarer les variables de ce type. Les jours de la semaine MONDAY, TUESDAY, ... sont les valeurs possibles qu'une variable de type WeekDay peut prendre. Vous pouvez également choisir n'importe quelle autre affectation pour vos variables. Pour l'exemple des cartes à jouer ci-dessus, vous utiliseriez la syntaxe suivante :

public enum Cards
{
CLUBS, SPADES, HEARTS, DIAMONDS
}

Créer une variable enum

Voilà comment déclarer une variable de type WeekDay et lui attribuer une valeur.

WeekDay day = WeekDay.MONDAY;

WeekDay est maintenant le mot-clé pour le type enum qui vient d'être créé.

System.out.println(day);

Si la variable est émise ainsi sur la console, la chaîne de caractères "MONDAY" apparaît sur la console.

Exemple d'application

La variable day peut également être comparée dans des expressions logiques. Ainsi, on peut désormais interroger le jour de la semaine dans une construction switch par exemple :

String message = "";
WeekDay day = WeekDay.FRIDAY;
switch(day)
{
case MONDAY:
case TUESDAY:
case WEDNESDAY:
message = "Courage, la semaine vient de commencer.";
break;

case THURSDAY:
case FRIDAY:
message = "C'est bientôt le week-end !";
break;

case SATURDAY:
case SUNDAY:
message = "Enfin le week-end !";
}
System.out.println(message);

La sortie du code change selon l'état de la variable day.