En Java, Énumérations ou Java Enum servir à représenter un groupe de constantes nommées dans un langage de programmation. Les énumérations Java sont utilisées lorsque nous connaissons toutes les valeurs possibles au moment de la compilation, telles que les choix dans un menu, les modes d'arrondi, les indicateurs de ligne de commande, etc. L'ensemble des constantes dans un type d'énumération n'a pas besoin de rester fixe pour toujours.
Qu’est-ce que l’énumération ou l’énumération en Java ?
Une énumération Java est un type de classe. Bien que nous n'ayons pas besoin d'instancier une énumération en utilisant nouveau, elle a les mêmes capacités que les autres classes. Ce fait fait de l’énumération Java un outil très puissant. Tout comme les classes, vous pouvez leur donner des constructeurs, ajouter des variables et des méthodes d'instance et même implémenter des interfaces.
Exemple d'énumération :
Les 4 couleurs d'un jeu de cartes à jouer peuvent être 4 énumérateurs nommés Trèfle, Diamant, Cœur et Pique, appartenant à un type énuméré nommé Suite. D'autres exemples incluent des types naturels énumérés (comme les planètes, les jours de la semaine, les couleurs, les directions, etc.).
Une chose à garder à l’esprit est que, contrairement aux classes, les énumérations n’héritent pas d’autres classes et ne peuvent pas être étendues (c’est-à-dire devenir une superclasse). Nous pouvons également y ajouter des variables, des méthodes et des constructeurs. L'objectif principal d'une énumération est de définir nos propres types de données (Enumerated Data Types).
Déclaration d'énumération en Java
La déclaration Enum peut être effectuée en dehors d'une classe ou à l'intérieur d'une classe mais pas à l'intérieur d'une méthode.
1. Déclaration hors cours
Java
// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Sortir
RED>
2. Déclaration à l'intérieur d'une classe
Java
Java sort de la boucle
// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Sortir
RED>
- La première ligne à l'intérieur de l'énumération doit être une liste de constantes, puis d'autres éléments tels que des méthodes, des variables et des constructeurs.
- Selon Conventions de dénomination Java , il est recommandé de nommer la constante avec toutes les lettres majuscules
Propriétés d'Enum en Java
Il existe certaines propriétés suivies par Enum comme mentionné ci-dessous :
- Chaque énumération est implémentée en interne à l’aide de Class.
- Chaque constante enum représente un objet de type énumération.
- Le type Enum peut être passé comme argument à changer déclarations.
- Chaque constante d'énumération est toujours implicitement finale statique publique . Puisque c'est statique , nous pouvons y accéder en utilisant le nom enum. Puisque c'est final , nous ne pouvons pas créer d'énumérations enfants.
- Nous pouvons déclarer le méthode main() à l'intérieur de l'énumération. Par conséquent, nous pouvons appeler l'énumération directement à partir de l'invite de commande.
Vous trouverez ci-dessous l'implémentation des propriétés ci-dessus :
Java
// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }> |
>
>
objet java en jsonSortir
Mondays are bad.>
Programmes d'énumération Java
1. Fonction principale à l'intérieur d'Enum
Nous pouvons déclarer une fonction principale dans une énumération car nous pouvons invoquer l'énumération directement à partir de l'invite de commande.
Vous trouverez ci-dessous l'implémentation de la propriété ci-dessus :
Java
// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Sortir
RED>
2. Parcourez Enum
Nous pouvons parcourir l'Enum en utilisant des valeurs () et une boucle. La fonction Values() renvoie un tableau de valeurs Enum sous forme de constantes à l'aide desquelles nous pouvons parcourir les valeurs.
Ci-dessous l'implémentation de la boucle via Enum :
Java
// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }> |
>
>Sortir
RED GREEN BLUE>
3. Enum dans une instruction Switch
Java
// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }> |
>
>Sortir
Other color observed>
Énumération et héritage
- Toutes les énumérations s'étendent implicitement classe java.lang.Enum . Comme une classe ne peut que s'étendre un parent en Java, une énumération ne peut rien étendre d'autre.
- Méthode toString() est remplacé dans classe java.lang.Enum , qui renvoie le nom de la constante enum.
- enum peut implémenter de nombreuses interfaces.
Énumération et constructeur
- Enum peut contenir un constructeur et il est exécuté séparément pour chaque constante enum au moment du chargement de la classe enum.
- Nous ne pouvons pas créer explicitement des objets enum et nous ne pouvons donc pas invoquer directement le constructeur enum.
Énumération et méthodes
Enum peut contenir les deux béton méthodes et abstrait méthodes. Si une classe enum a une méthode abstraite, alors chaque instance de la classe enum doit l'implémenter.
Java
algorithmes de recherche binaire
// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }> |
>
>Sortir
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
FAQ sur Enum en Java
T1. Pouvons-nous créer l'instance d'Enum par le nouveau mot-clé ?
Ans:
Non, nous ne pouvons pas créer l'instance du mot-clé Enum car il contient uniquement des constructeurs privés.
Q2. Pouvons-nous avoir une méthode abstraite dans l'Enum ?
Ans:
Oui, nous avons une méthode abstraite dans Enum.
Q3. Quel est le but de la méthode values() dans l’énumération ?
Ans:
En Java, la méthode values() peut être utilisée pour renvoyer toutes les valeurs présentes dans l'énumération.
Q4. Quel est le but de la méthode valueOf() dans l’énumération ?
Ans:
La méthode valueOf() renvoie la constante enum de la valeur de chaîne spécifiée si elle existe.
Q5. Quel est le but de la méthode ordinal() dans l’énumération ?
Ans:
En utilisant la méthode ordinal(), chaque index constant enum peut être trouvé, tout comme un index de tableau.
Q6. Écrivez un programme en Java pour décrire l'utilisation des méthodes values(), valueOf() et ordinal() dans l'énumération.
Ans:
SortirJava
// Java program to demonstrate working of values(),>// ordinal() and valueOf()>enum>Color {>>RED,>>GREEN,>>BLUE;>}>public>class>Test {>>public>static>void>main(String[] args)>>{>>// Calling values()>>Color arr[] = Color.values();>>// enum with loop>>for>(Color col : arr) {>>// Calling ordinal() to find index>>// of color.>>System.out.println(col +>' at index '>>+ col.ordinal());>>}>>// Using valueOf(). Returns an object of>>// Color with given constant.>>// Uncommenting second line causes exception>>// IllegalArgumentException>>System.out.println(Color.valueOf(>'RED'>));>>// System.out.println(Color.valueOf('WHITE'));>>}>}>>tranche de tableau Java>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Article suivant sur l'énumération : Enum avec valeur personnalisée en Java