Classe Java enum & enum (avec exemples)

Dans ce didacticiel, nous allons découvrir les énumérations en Java. Nous allons apprendre à créer et utiliser des énumérations et des classes énumérées à l'aide d'exemples.

En Java, une énumération (abréviation d'énumération) est un type qui a un ensemble fixe de valeurs constantes. Nous utilisons le enummot - clé pour déclarer les énumérations. Par exemple,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Ici, nous avons créé une énumération nommée Size. Il contient des valeurs fixes SMALL, MEDIUM, LARGE et EXTRALARGE.

Ces valeurs entre accolades sont appelées constantes d'énumération (valeurs).

Remarque: les constantes d'énumération sont généralement représentées en majuscules.

Exemple 1: Java Enum

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )

Production

 PETIT MOYEN

Comme nous pouvons le voir dans l'exemple ci-dessus, nous utilisons le nom enum pour accéder aux valeurs constantes.

De plus, nous pouvons créer des variables de types enum. Par exemple,

 Size pizzaSize;

Ici, pizzaSize est une variable de type Size. Il ne peut être attribué qu'avec 4 valeurs.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Exemple 2: Java Enum avec l'instruction switch

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )

Production

 J'ai commandé une pizza de taille moyenne.

Dans le programme ci-dessus, nous avons créé un type d'énumération Size. Nous avons ensuite déclaré une variable pizzaSize de type Size.

Ici, la variable pizzaSize ne peut être affectée qu'à 4 valeurs (SMALL, MEDIUM, LARGE, EXTRALARGE).

Notez la déclaration,

 Test t1 = new Test(Size.MEDIUM);

Il appellera le Test()constructeur à l'intérieur de la classe Test. Désormais, la variable pizzaSize est affectée à la constante MEDIUM.

En fonction de la valeur, l'un des cas de l'instruction switch case est exécuté.

Classe Enum en Java

En Java, les types enum sont considérés comme un type spécial de classe. Il a été introduit avec la sortie de Java 5.

Une classe enum peut inclure des méthodes et des champs comme les classes normales.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Lorsque nous créons une classe enum, le compilateur crée des instances (objets) de chaque constantes enum. De plus, toutes les constantes d'énumération sont toujours public static finalpar défaut.

Exemple 3: classe Java Enum

 enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )

Production

 La taille de la pizza est petite

Dans l'exemple ci-dessus, nous avons créé une classe d'énumération Size. Il a quatre constantes SMALL, MEDIUM, LARGE et EXTRALARGE.

Puisque Size est une classe d'énumération, le compilateur crée automatiquement des instances pour chaque constantes d'énumération.

Ici, à l'intérieur de la main()méthode, nous avons utilisé l'instance SMALL pour appeler la getSize()méthode.

Remarque : comme les classes régulières, une classe enum peut également inclure des constructeurs. Pour en savoir plus, visitez le constructeur Java enum.

Méthodes de la classe Java Enum

Il existe des méthodes prédéfinies dans les classes enum qui sont facilement disponibles.

1. Java Enum ordinal ()

La ordinal()méthode renvoie la position d'une constante d'énumération. Par exemple,

 ordinal(SMALL) // returns 0

2. Énumération compareTo ()

La compareTo()méthode compare les constantes d'énumération en fonction de leur valeur ordinale. Par exemple,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

La toString()méthode retourne la représentation sous forme de chaîne des constantes d'énumération. Par exemple,

 SMALL.toString() // returns "SMALL"

4. Enum name ()

La name()méthode renvoie le nom défini d'une constante enum sous forme de chaîne. La valeur renvoyée par la name()méthode est final. Par exemple,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

 class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Ici, il est garanti que la variable contiendra l'une des quatre valeurs. Maintenant, si nous essayons de transmettre des valeurs autres que ces quatre valeurs, le compilateur générera une erreur.

Articles intéressants...