Parcours
/
Java
Java
/
Programme
/
Énumérations
Én

Énumérations en Java

12 exercices

À propos de Énumérations

Un type énuméré est un type de données particulier qui permet à une variable de prendre pour valeur l'une d'un ensemble de constantes prédéfinies. La variable doit être égale à l'une des valeurs qui ont été prédéfinies pour ce type. On en trouve couramment comme exemples les points cardinaux (les valeurs NORTH, SOUTH, EAST et WEST) et les jours de la semaine.

Comme ce sont des constantes, les noms des champs d'un type énuméré s'écrivent en lettres majuscules.

Définir un type énuméré

En Java, on définit un type énuméré à l'aide du mot-clé enum. Par exemple, on déclare un type énuméré pour les jours de la semaine de cette façon :

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Il faut utiliser un type énuméré chaque fois que l'on a besoin de représenter un ensemble fixe de constantes. Cela couvre les énumérations naturelles comme les planètes de notre système solaire, ou les ensembles de données dont on connaît toutes les valeurs possibles à la compilation : par exemple les choix d'un menu, les options de ligne de commande, et ainsi de suite.

Utiliser un type énuméré

Voici du code qui montre comment utiliser l'énumération DayOfWeek définie ci-dessus :

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Ajouter des méthodes et des champs

Les types énumérés de Java sont bien plus puissants que leurs équivalents dans d'autres langages. La déclaration enum définit une classe (appelée type énuméré). Le corps de la classe d'énumération peut contenir des méthodes et d'autres champs :

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

Appel de la méthode getNumberOfStars sur un membre du type énuméré Rating :

Rating.GOOD.getNumberOfStars();
// => 4

Méthodes intégrées

Le compilateur ajoute automatiquement quelques méthodes spéciales lorsqu'il crée une énumération.

Par exemple, elles possèdent une méthode statique values qui renvoie un tableau contenant toutes les valeurs de l'énumération, dans l'ordre de leur déclaration :

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

L'extrait ci-dessus affiche ceci :

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

Le compilateur ajoute aussi une méthode statique valueOf qui renvoie un membre de l'énumération à partir de son nom :

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Énumérations