logo

Énumérations Java

Le Énumération en Java est un type de données qui contient un ensemble fixe de constantes.

Il peut être utilisé pour les jours de la semaine (DIMANCHE, LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI et SAMEDI), les directions (NORD, SUD, EST et OUEST), la saison (PRINTEMPS, ÉTÉ, HIVER et AUTOMNE ou AUTOMNE). ), les couleurs (ROUGE, JAUNE, BLEU, VERT, BLANC et NOIR), etc. Selon les conventions de dénomination Java, toutes les constantes devraient être en majuscules. Nous avons donc des constantes enum en majuscules.

Les énumérations Java peuvent être considérées comme des classes qui ont un ensemble fixe de constantes (une variable qui ne change pas). Les constantes d'énumération Java sont statiques et finales implicitement. Il est disponible depuis le JDK 1.5.

caractères d'échappement Java

Les énumérations sont utilisées pour créer notre propre type de données comme les classes. Le énumération Le type de données (également connu sous le nom de type de données énumérées) est utilisé pour définir une énumération en Java. Contrairement à C/C++, l'énumération en Java est plus puissant . Ici, nous pouvons définir une énumération soit à l'intérieur de la classe, soit à l'extérieur de la classe.

Java Enum hérite en interne du Classe d'énumération , il ne peut donc hériter d’aucune autre classe, mais il peut implémenter de nombreuses interfaces. Nous pouvons avoir des champs, des constructeurs, des méthodes et des méthodes principales dans l'énumération Java.

Points à retenir pour Java Enum

  • Enum améliore la sécurité des types
  • Enum peut être facilement utilisé dans le commutateur
  • L'énumération peut être parcourue
  • Enum peut avoir des champs, des constructeurs et des méthodes
  • Enum peut implémenter de nombreuses interfaces mais ne peut étendre aucune classe car il étend en interne la classe Enum
Points d'énumération Java

Exemple simple d'énumération Java

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Testez-le maintenant

Sortir:

 WINTER SPRING SUMMER FALL 

Voyons un autre exemple d'énumération Java dans lequel nous utilisons les méthodes value(), valueOf() et ordinal() de l'énumération Java.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Sortir:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Remarque : le compilateur Java ajoute en interne les méthodes Values(), ValueOf() et ordinal() dans l'énumération au moment de la compilation. Il crée en interne une classe statique et finale pour l'énumération.

Quel est le but de la méthode values() dans l’énumération ?

Le compilateur Java ajoute en interne la méthode values() lorsqu'il crée une énumération. La méthode values() renvoie un tableau contenant toutes les valeurs de l'énumération.

paramètres Java par défaut

Quel est le but de la méthode valueOf() dans l’énumération ?

Le compilateur Java ajoute en interne la méthode valueOf() lorsqu'il crée une énumération. La méthode valueOf() renvoie la valeur de l'énumération constante donnée.

Quel est le but de la méthode ordinal() dans l’énumération ?

Le compilateur Java ajoute en interne la méthode ordinal() lorsqu'il crée une énumération. La méthode ordinal() renvoie l'index de la valeur enum.


Définition de l'énumération Java

L'énumération peut être définie à l'intérieur ou à l'extérieur de la classe car elle est similaire à une classe. Le point-virgule (;) à la fin des constantes enum est facultatif. Par exemple:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Ou,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Les deux définitions de l'énumération Java sont les mêmes.

Exemple Java Enum : défini en dehors de la classe

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Testez-le maintenant

Sortir:

 WINTER 

Exemple d'énumération Java : défini à l'intérieur de la classe

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Testez-le maintenant

Sortir:

 WINTER 

Exemple Java Enum : méthode principale dans Enum

Si vous placez la méthode main() dans l’énumération, vous pouvez exécuter l’énumération directement.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Sortir:

 WINTER 

Initialisation de valeurs spécifiques aux constantes enum

Les constantes enum ont une valeur initiale qui commence à 0, 1, 2, 3, etc. Mais nous pouvons initialiser la valeur spécifique des constantes enum en définissant des champs et des constructeurs. Comme spécifié précédemment, Enum peut avoir des champs, des constructeurs et des méthodes.

Exemple de spécification de la valeur initiale des constantes enum

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Testez-le maintenant

Sortir:

montrer aux utilisateurs mysql
 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Le constructeur de type enum est privé. Si vous ne déclarez pas un compilateur privé, il crée en interne un constructeur privé.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Code interne généré par le compilateur pour l'exemple ci-dessus de type enum

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Pouvons-nous créer l'instance d'Enum par un nouveau mot-clé ?

Non, car il contient uniquement des constructeurs privés.

Pouvons-nous avoir une méthode abstraite dans l'Enum ?

Oui bien sûr! nous pouvons avoir des méthodes abstraites et assurer l’implémentation de ces méthodes.


Java Enum dans une instruction switch

Nous pouvons appliquer une énumération sur l'instruction switch comme dans l'exemple donné :

Exemple d'application d'Enum sur une instruction switch

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Testez-le maintenant

Sortir:

 monday