Fondamentaux des énumérations Java

JavaBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez apprendre les énumérations en Java. Les énumérations sont un type de données spécial en Java qui nous permet de définir un ensemble fixe de constantes. Vous allez apprendre à créer, utiliser et manipuler les énumérations en Java.

Création d'une énumération

  1. Créez un nouveau fichier nommé StudentResult.java dans le répertoire ~/projet.
  2. Ajoutez le code suivant pour créer une énumération nommée StudentResult:
public enum StudentResult {
    PASS,
    FAIL,
    ABSENT
}

Utilisation des énumérations

  1. Créez un nouveau fichier nommé Demo.java dans le répertoire ~/projet.
  2. Ajoutez le code suivant pour créer une variable du type énumération StudentResult et utiliser ses valeurs :
public class Demo {
    public static void main(String[] args) {
        StudentResult result1 = StudentResult.ABSENT;
        StudentResult result2 = StudentResult.FAIL;
        StudentResult result3 = StudentResult.PASS;

        System.out.println(result1);
        System.out.println(result2);
        System.out.println(result3);
    }
}
  1. Exécutez le code à l'aide de la commande suivante dans le terminal :
javac Demo.java && java Demo

Utilisation des énumérations avec des instructions if-else

  1. Ajoutez le code suivant pour utiliser l'énumération StudentResult avec des instructions if-else :
public class Demo {
    public static void main(String[] args) {
        StudentResult result = StudentResult.FAIL;

        if(result == StudentResult.ABSENT)
            System.out.println("L'étudiant a été absent à l'examen.");

        else if(result == StudentResult.PASS)
            System.out.println("L'étudiant a réussi l'examen.");

        else if(result == StudentResult.FAIL)
            System.out.println("L'étudiant a échoué l'examen.");
    }
}

Utilisation des énumérations avec des instructions switch

  1. Ajoutez le code suivant pour utiliser l'énumération StudentResult avec des instructions switch :
public class Demo {
    public static void main(String[] args) {
        StudentResult result = StudentResult.FAIL;

        switch(result) {
            case ABSENT : System.out.println("L'étudiant a été absent à l'examen.");
            break;

            case PASS : System.out.println("L'étudiant a réussi l'examen.");
            break;

            case FAIL : System.out.println("L'étudiant a échoué l'examen.");
            break;
        }
    }
}

Itération sur les énumérations

  1. Ajoutez le code suivant pour itérer sur l'énumération StudentResult :
public class Demo {
    public static void main(String[] args) {
        StudentResult[] resultArr = StudentResult.values();

        for(StudentResult sr : resultArr) {
            System.out.println(sr + " à l'index " + sr.ordinal());
        }
    }
}

Utilisation de la méthode toString() des énumérations

  1. Ajoutez le code suivant pour utiliser la méthode toString() des énumérations :
public class Demo {
    public static void main(String[] args) {
        for(StudentResult sr : StudentResult.values()) {
            String resultStr = sr.toString();
            System.out.println("En majuscules : " + resultStr);
            System.out.println("En minuscules : " + resultStr.toLowerCase());
            System.out.println();
        }
    }
}

Création d'énumérations à partir de chaînes de caractères

  1. Ajoutez le code suivant pour créer des énumérations à partir de chaînes de caractères :
public class Demo {
    public static void main(String[] args) {
        String resultStr = "FAIL";
        StudentResult result = StudentResult.valueOf(resultStr);
        System.out.print("Enum à partir de chaîne : " + result);
    }
}
  1. Exécutez le code à l'aide de la commande suivante dans le terminal :
javac Demo.java && java Demo

Création d'énumérations à l'intérieur de classes

  1. Ajoutez le code suivant pour créer une énumération à l'intérieur d'une classe et l'utiliser :
public class Student {
    String name;
    StudentResult result;

    // Définition d'un type d'énumération
    enum StudentResult {
        PASS,
        FAIL,
        ABSENT;
    }

    // Constructeur
    Student(String s, StudentResult sr) {
        name = s;
        result = sr;
    }

    // Méthode if-else pour l'énumération
    public void printResult() {
        if (this.result == StudentResult.ABSENT)
            System.out.println(this.name + " a été absent à l'examen.");

        else if (this.result == StudentResult.PASS)
            System.out.println(this.name + " a réussi l'examen.");

        else
            System.out.println(this.name + " a échoué l'examen.");
    }

    // Méthode pour l'énumération
    public boolean wasAbsent() {
        if (this.result == StudentResult.ABSENT)
            return true;
        else
            return false;
    }

    // Méthode principale
    public static void main(String[] args) {
        Student s1 = new Student("Justin", StudentResult.ABSENT);
        Student s2 = new Student("Jessica", StudentResult.PASS);

        s1.printResult();
        s2.printResult();

        System.out.println("L'étudiant s1 était absent : " + s1.wasAbsent());
    }
}
  1. Exécutez le code à l'aide de la commande suivante dans le terminal :
javac Student.java && javac Demo.java && java Student

Utilisation de EnumSet

  1. Ajoutez le code suivant pour utiliser EnumSet :
import java.util.EnumSet;

enum StudentResult {
    PASS,
    FAIL,
    ABSENT;
}

public class Demo {
    public static void main(String[] args) {
        EnumSet<StudentResult> resultSet1 = EnumSet.of(StudentResult.FAIL, StudentResult.PASS);
        EnumSet<StudentResult> resultSet2 = EnumSet.allOf(StudentResult.class);

        System.out.println("Enum Set-1 : " + resultSet1);
        System.out.print("Enum Set-2 : " + resultSet2);
    }
}

Utilisation de EnumMaps

  1. Ajoutez le code suivant pour utiliser EnumMaps :
import java.util.EnumMap;
import java.util.Map;

enum StudentResult {
    PASS,
    FAIL,
    ABSENT;
}

public class Demo {
    public static void main(String[] args) {
        EnumMap<StudentResult, String> resultMap = new EnumMap<>(StudentResult.class);
        resultMap.put(StudentResult.PASS, "L'étudiant a réussi l'examen");
        resultMap.put(StudentResult.FAIL, "L'étudiant a échoué l'examen");
        resultMap.put(StudentResult.ABSENT, "L'étudiant a été absent à l'examen");

        for (Map.Entry<StudentResult, String> e : resultMap.entrySet())
            System.out.println(e.getKey() + " --> " + e.getValue());
    }
}

Résumé

Dans ce laboratoire, vous avez appris comment créer une énumération, l'utiliser avec des instructions if-else et switch, itérer sur une énumération, utiliser sa méthode toString(), créer des énumérations à partir de chaînes de caractères, créer une énumération à l'intérieur d'une classe, utiliser EnumSet pour stocker efficacement des constantes d'énumération, utiliser EnumMaps pour stocker des paires clé-valeur d'énumérations et utiliser des méthodes concrètes et abstraites dans des énumérations. Vous avez également appris que les énumérations sont utilisées pour définir une collection de valeurs constantes et qu'elles augmentent la sécurité de type en Java.