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
- Créez un nouveau fichier nommé
StudentResult.javadans le répertoire~/projet. - Ajoutez le code suivant pour créer une énumération nommée
StudentResult:
public enum StudentResult {
PASS,
FAIL,
ABSENT
}
Utilisation des énumérations
- Créez un nouveau fichier nommé
Demo.javadans le répertoire~/projet. - Ajoutez le code suivant pour créer une variable du type énumération
StudentResultet 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);
}
}
- 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
- Ajoutez le code suivant pour utiliser l'énumération
StudentResultavec 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
- Ajoutez le code suivant pour utiliser l'énumération
StudentResultavec 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
- 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
- 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
- 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);
}
}
- 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
- 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());
}
}
- Exécutez le code à l'aide de la commande suivante dans le terminal :
javac Student.java && javac Demo.java && java Student
Utilisation de EnumSet
- 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
- 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.



