Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Travail Avec les Enum en Java | Fonctionnalités et Techniques Avancées de Java
Structures de Données Java

bookTravail Avec les Enum en Java

Passons à une autre structure de données très intéressante et, surtout, distinctive : l'enum.

Examinons la création d'une enum. La création d'une enum diffère considérablement des autres structures de données, car elle s'effectue au niveau de la classe :

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Application pratique

Enum est nécessaire afin de référencer facilement la constante. Puisqu'il s'agit d'une liste de constantes, vous y accédez de la manière suivante :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Ici, nous accédons simplement à la constante de l'enum pour comprendre quel jour nous sommes aujourd'hui. Au lieu de créer de nombreuses constantes différentes, nous stockons simplement un tableau de constantes dans l'enum. Cela est pratique et très utile. Par exemple, dans l'un des défis précédents, nous aurions pu stocker les noms des départements dans un enum et utiliser la constante comme clé.

Voyons un exemple :

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Conversion en tableau

Il est également possible de récupérer toutes les valeurs constantes d'une énumération sous forme de tableau en utilisant la méthode values().

Voici un exemple :

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Déclaration de champs et de méthodes dans les enums

Il est également possible de déclarer des champs et des méthodes dans les enums.

Prenons l'exemple d'un feu de circulation :

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Dans les enums, les méthodes fonctionnent légèrement différemment. Puisqu'il s'agit de constantes, elles ne peuvent pas être modifiées. Par conséquent, on ajoute des champs dans le constructeur de cet enum, puis on définit la méthode getAction() qui indique immédiatement l'action à effectuer pour un feu de circulation spécifique. Comme vous pouvez le constater, nous spécifions cette action directement dans l'enum lors de l'énumération des constantes.

Voyons un exemple d'appel à une telle méthode :

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Comme vous pouvez le constater, grâce à la méthode getAction(), l’action à effectuer pour un feu de signalisation spécifique a été obtenue immédiatement. Il est possible de remplacer RED par n’importe quelle autre couleur et d’observer le résultat.

Les méthodes et champs dans les énumérations sont moins fréquemment utilisés, mais cette fonctionnalité existe, il est donc utile de la connaître. Pour en savoir plus sur les énumérations, consultez la Documentation officielle Java

Avantages des énumérations en Java

  1. Lisibilité améliorée : le remplacement des constantes numériques et des littéraux de chaîne par des valeurs nommées rend le code plus lisible ;
  2. Sécurité de type : le compilateur garantit la sécurité de type lors de l’utilisation des énumérations, évitant ainsi les erreurs liées au type ;
  3. Ensemble de valeurs limité : les énumérations fournissent un ensemble fixe de valeurs, ce qui rend le code plus prévisible ;
  4. Possibilité d’ajouter des méthodes et des champs : les énumérations peuvent contenir des méthodes et des champs, ce qui les rend plus puissantes que les énumérations simples.

1. Qu'est-ce qu'un enum en Java ?

2. Comment déclare-t-on un enum appelé Months représentant les mois de l'année ?

3. Comment obtenir un tableau de toutes les valeurs dans un enum appelé Colors ?

4. Laquelle des affirmations suivantes concernant l'énumération suivante est vraie ?

5. Comment comparer correctement currentStatus avec Status.ACTIVE ? Considérez l'énumération suivante :

question mark

Qu'est-ce qu'un enum en Java ?

Select the correct answer

question mark

Comment déclare-t-on un enum appelé Months représentant les mois de l'année ?

Select the correct answer

question mark

Comment obtenir un tableau de toutes les valeurs dans un enum appelé Colors ?

Select the correct answer

question mark

Laquelle des affirmations suivantes concernant l'énumération suivante est vraie ?

Select the correct answer

question mark

Comment comparer correctement currentStatus avec Status.ACTIVE ? Considérez l'énumération suivante :

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What is the syntax for creating an enum in Java?

Can you show an example of how to use enums in a Java program?

What are some common use cases for enums in Java?

bookTravail Avec les Enum en Java

Glissez pour afficher le menu

Passons à une autre structure de données très intéressante et, surtout, distinctive : l'enum.

Examinons la création d'une enum. La création d'une enum diffère considérablement des autres structures de données, car elle s'effectue au niveau de la classe :

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Application pratique

Enum est nécessaire afin de référencer facilement la constante. Puisqu'il s'agit d'une liste de constantes, vous y accédez de la manière suivante :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Ici, nous accédons simplement à la constante de l'enum pour comprendre quel jour nous sommes aujourd'hui. Au lieu de créer de nombreuses constantes différentes, nous stockons simplement un tableau de constantes dans l'enum. Cela est pratique et très utile. Par exemple, dans l'un des défis précédents, nous aurions pu stocker les noms des départements dans un enum et utiliser la constante comme clé.

Voyons un exemple :

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Conversion en tableau

Il est également possible de récupérer toutes les valeurs constantes d'une énumération sous forme de tableau en utilisant la méthode values().

Voici un exemple :

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Déclaration de champs et de méthodes dans les enums

Il est également possible de déclarer des champs et des méthodes dans les enums.

Prenons l'exemple d'un feu de circulation :

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Dans les enums, les méthodes fonctionnent légèrement différemment. Puisqu'il s'agit de constantes, elles ne peuvent pas être modifiées. Par conséquent, on ajoute des champs dans le constructeur de cet enum, puis on définit la méthode getAction() qui indique immédiatement l'action à effectuer pour un feu de circulation spécifique. Comme vous pouvez le constater, nous spécifions cette action directement dans l'enum lors de l'énumération des constantes.

Voyons un exemple d'appel à une telle méthode :

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Comme vous pouvez le constater, grâce à la méthode getAction(), l’action à effectuer pour un feu de signalisation spécifique a été obtenue immédiatement. Il est possible de remplacer RED par n’importe quelle autre couleur et d’observer le résultat.

Les méthodes et champs dans les énumérations sont moins fréquemment utilisés, mais cette fonctionnalité existe, il est donc utile de la connaître. Pour en savoir plus sur les énumérations, consultez la Documentation officielle Java

Avantages des énumérations en Java

  1. Lisibilité améliorée : le remplacement des constantes numériques et des littéraux de chaîne par des valeurs nommées rend le code plus lisible ;
  2. Sécurité de type : le compilateur garantit la sécurité de type lors de l’utilisation des énumérations, évitant ainsi les erreurs liées au type ;
  3. Ensemble de valeurs limité : les énumérations fournissent un ensemble fixe de valeurs, ce qui rend le code plus prévisible ;
  4. Possibilité d’ajouter des méthodes et des champs : les énumérations peuvent contenir des méthodes et des champs, ce qui les rend plus puissantes que les énumérations simples.

1. Qu'est-ce qu'un enum en Java ?

2. Comment déclare-t-on un enum appelé Months représentant les mois de l'année ?

3. Comment obtenir un tableau de toutes les valeurs dans un enum appelé Colors ?

4. Laquelle des affirmations suivantes concernant l'énumération suivante est vraie ?

5. Comment comparer correctement currentStatus avec Status.ACTIVE ? Considérez l'énumération suivante :

question mark

Qu'est-ce qu'un enum en Java ?

Select the correct answer

question mark

Comment déclare-t-on un enum appelé Months représentant les mois de l'année ?

Select the correct answer

question mark

Comment obtenir un tableau de toutes les valeurs dans un enum appelé Colors ?

Select the correct answer

question mark

Laquelle des affirmations suivantes concernant l'énumération suivante est vraie ?

Select the correct answer

question mark

Comment comparer correctement currentStatus avec Status.ACTIVE ? Considérez l'énumération suivante :

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1
some-alt