Tutoriel Java Enum: Qu'est-ce que c'est et comment l'implémenter?

Cet article sur le didacticiel Java Enum vous fournira une connaissance détaillée des constantes Enum ainsi que des exemples pratiques pour une meilleure compréhension.

La Énumération dans est un moyen de définir une classe avec des constantes fixes et nommées avec leurs en utilisant le mot-clé enum. Dans ce ' Tutoriel Java Enum »Article, nous allons apprendre àdéfinir l'énumération avecexemples pour une meilleure compréhension.



Qu'est-ce que l'énumération?

Énumérations Java sont des classes qui ont un ensemble fixe de constantes ou de variables qui n'ont pas tendance à changer. L'énumération en Java est réalisée à l'aide du mot-clé enum. Le Java énumération les constantes sont statique et final implicitement. La fonction Enum est disponible depuis JDK version 1.5.



Pourquoi avons-nous besoin d'un dénombrement?

énumération améliore la sécurité du type lors de la vérification au moment de la compilation pour éviter les erreurs au moment de l'exécution en évitant le code standard. Par exemple, si vous devez sélectionner une possibilité parmi le plus petit nombre d'options disponibles, disons,

Emploi Type: (Contrat / Temporaire / Permanent)



Employé du didacticiel Java Enum

Ensuite, la meilleure option serait d'utiliser un enum. Car énumération peut être facilement utilisé dans le commutateur. énumération peut être parcouru. énumération pouvez avoir champs, constructeurs et méthodes. Par conséquent , cela augmente la vérification au moment de la compilation et évite les erreurs dues à la transmission de constantes non valides, car vous avez déjà documenté les valeurs autorisées à utiliser.

Différences entre Enum et Class

Bien qu'une classe et une énumération aient des fonctionnalités similaires dans l'environnement Java, elles diffèrent sur quelques aspects. Laissez-nous discuter des différences



Enum Classe
Les constantes d'énumération ne peuvent pas être remplacéesLes constantes de classe peuvent être remplacées
Enum ne prend pas en charge la création d'objetsLa classe prend en charge la création d'objets
Enum ne peut pas étendre d'autres classesUne classe peut étendre d'autres classes
énumération c une interface d'outilUne classe peut implémenter l'interface


Exemples pratiques d'énumération

Maintenant, pour comprendre enum d'une bien meilleure manière, exécutons quelques exemples pratiques basés sur ce qui suit.

Définition de l'énumération en Java

Enum peut être déclaré à l'intérieur d'une classe ou à l'extérieur d'un claisser. Mais, il ne peut être déclaré dans aucune méthode. Prenons un petit exemple pour comprendre sa syntaxe, sa définition et sa déclaration.

Syntaxe:

nom enum {constantes}

Dans cet exemple, nous avons déclaré le principale() méthode à l'intérieur énumération

définition de package classe publique Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Ouput

KTM

Dans cet exemple, le principale() la méthode est déclarée à l'extérieur d'énumération.

package definition enum Color {BAJAJ, KTM, YAMAHA} classe publique Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

//Production:

YAMAHA

Enum utilisé dans Switch Case

java convertit double en int

L'énumération peut également être utilisée dans une instruction switch. Il est important que toutes les instructions case doivent utiliser des constantes de la même énumération que celle utilisée par l'instruction switch. Vérifions un exemple basé sur cela.

Ici, nous déclarerons une énumération avec les jours de la semaine comme éléments et nous passerons les données sous la forme d'une chaîne pour imprimer les données du cas correspondant.

package switch enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, JEUDI, VENDREDI, SAMEDI} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case LUNDI: System.out.println ('Salut, Aujourd'hui est lundi') cas de pause MARDI: System.out.println ('Salut, Aujourd'hui est mardi') cas de pause MERCREDI: System.out.println ('Salut, Aujourd'hui, c'est mercredi ') break case JEUDI: System.out.println (' Salut, Aujourd'hui est jeudi ') break case VENDREDI: System.out.println (' Bonjour, Aujourd'hui est vendredi. ') break case SAMEDI: System.out.println (' Bonjour, Aujourd'hui c'est votre week-end ') break case DIMANCHE: System.out.println (' Bonjour, Aujourd'hui est un jour férié ') pause par défaut: System.out.println (' Veuillez entrer un jour valide. ') Break}} public static void main (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

//Production:

Salut, c'est aujourd'hui Lundi

Héritage avec enum

Fondamentalement, tout énumération est représentée comme une classe qui étend la classe abstraite java.lang. Enum et a plusieurs membres statiques. Par conséquent, un énumération ne peut étendre aucune autre classe ou énumération il n'y a pas de multiple héritages . Exécutons un exemple pour mieux le comprendre.

Ici, nous hériterons du système d'exploitation basé sur le fabricant du téléphone.

package inheritance import java.util.ArrayList import java.util.List classe publique Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) for (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} interface statique HTTPMethodConvertible {public String getHTTPMethodType ()} énumération statique LibraryEnum implémente HTTPMethodConvertible {FIRST ('Google Pixel'), SECOND ( 'Huawei'), THIRD ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} static enum ClientEnum implémente HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

//Production:

Google Pixel
Android One

Énumération avec des valeurs personnalisées

Les énumérations ont leurs propres valeurs de chaîne par défaut, nous pouvons également attribuer des valeurs personnalisées aux énumérations. Prenons l'exemple ci-dessous.

enum Traffic {RED ('STOP'), ORANGE ('WAIT'), GREEN ('GO')}

Dans l'exemple ci-dessus, nous pouvons voir que Traffic enum a trois membres. À savoir,

ROUGE ORANGE et VERT avec leurs propres valeurs personnalisées ARRÊTEZ, ATTENDEZ et ALLER respectivement.

Maintenant, pour utiliser le même type d'énumération dans le code, nous devons suivre certains points qui sont:

  • Nous devons créer constructeur paramétré pour cette classe enum. Parce que nous savons que énumération l'objet de la classe ne peut pas être créé explicitement, donc pour l'initialisation, nous utilisons un constructeur paramétré.
  • La constructeur ne peut pas être le public ou protégé qu'il doit avoir privé ou défaut modificateurs. Si nous créons public ou protected, cela permettra d'initialiser plus d'un objets qui sont totalement contre fonctionnalité enum.
  • Nous devons créer une méthode getter pour obtenir la valeur de énumérations.

Exécutons un programme basé sur cela.

package traffic enum TrafficSignal {RED ('STOP'), GREEN ('GO'), ORANGE ('WAIT') private String action public String getAction () {return this.action} private TrafficSignal (String action) {this.action = action}} classe publique Edureka {public static void main (String args []) {TrafficSignal [] signaux = TrafficSignal.values ​​() for (TrafficSignal signal: signaux) {System.out.println ('name:' + signal.name () + 'action:' + signal.getAction ())}}}

//Production:

nom: action ROUGE: STOP
nom: GREEN action: GO
Masculin e: action ORANGE: ATTENDRE

Énumération dans les instructions if-else-if

Maintenant, exécutons un programme basé sur enum dans les instructions if-else-if. Ici, nous trouverons la direction de parcours en passant les valeurs de directions disponibles dans l'énumération.

package Directions enum Directions {EAST, WEST, NORTH, SOUTH} public class Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Direction: East')} else if (dir == Directions.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : Nord ')} else {System.out.println (' Direction: Sud ')}}}

//Production:

Dire ction: Nord

Différentes méthodes utilisées avec enum

Valeurs(): Lorsque vous créez une énumération, le Compilateur Java ajoute en interne le valeurs() méthode. Cette méthode renvoie un tableau contenant toutes les valeurs de l'énumération.

//Syntaxe:

public static enum-type [] values ​​()

Nous découvrirons la valeur d'index d'un élément particulier dans un tableau.

package values ​​enum Color {RED, GREEN, BLUE} classe publique Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() for (Color col: arr) {System.out.println ( col + 'at index' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

//Production:

programme pour inverser un nombre en java

ROUGE à l'index 0
VERT à l'index 1
BLEU à l'index 2
NET

Valeur de(): Cetteest utilisée pour renvoyer la constante d'énumération dont la valeur est égale à passé comme argument lors de l'appel de cette méthode.

//Syntaxe:

public static enum-type valueOf (chaîne str)

Ici, nous trouverons le coût d'un téléphone particulier en fonction de l'entrée que nous transmettons à la chaîne.

package valuesof enum Mobile {Samsung (1099), Apple (1250), Google (1325) int price Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('CellPhone List:') for (Mobile m: Mobile.values ​​()) {System.out.println (m + 'cost' + m.showPrice () + 'dollars' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Selected:' + ret)}}

//Production:

Samsung coûte 1099 dollars
Apple coûte 1250 dollars
Google coûte 1325 dollars
Sélectionné: Samsung

Ordinal(): L'interpréteur Java ajoute le ordinal() méthode en interne lorsqu'il crée un enum. La méthode ordinal () renvoie le indice de la valeur enum.

//Syntaxe:

ordinal int final public ()

Ici, nous découvrirons la valeur d'index d'un élément particulier dans un tableau. et aussi, la position du fruit de la cerise.

Package ordinal enum Fruits {Pomme, Banane, Cerise, Date, Sureau} enum Légumes {Carotte, Betterave, Haricots, Tomate, Oignon} public class Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. values ​​() for (Fruits fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Fruits f1, f2, f3 f1 = Fruits.Apple f2 = Fruits.Cherry f3 = Fruits.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'vient après' + f1)} Légumes v1 = Vegetables.Beetroot if (f1.equals (v1)) {System.out.println (' Incorrect') } } }

//Production:

Pomme: 0
Banane: 1
Cerise: 2
Date: 3
Sureau: 4
Cherry vient après Apple

Avantages de Enum

  • Enum en Java s'améliore sécurité de type
  • Enum est conçu pour être facilement utilisable dans boîtiers de commutation
  • Enum peut être traversé
  • Enum peut avoir domaines, méthodes, et constructeurs
  • Enum peut implémenter les interfaces
  • Enum ne peut pas étendre un classe car en interne, il étend Enum classe

Enum Usecase: Rock, Paper, Jeu de ciseaux

Nous utiliserons énumération en Java pour créer notre jeu d'enfance, le papier de roche (pierre) et les ciseaux . Le code suivant explique comment.

package Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = new Scanner (System.in) System.out.println ('nLet us begin ... n') while (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('nYour turn (Veuillez entrer s pour un ciseau, p pour le papier, t pour la pierre, q pour quitter): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} else if (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} else {System.out.println ( 'nVeuillez vérifier l'entrée et réessayer! n') validInput = false}} while (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nC'est mon tour: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nC'est mon tour: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nC'est mon tour: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor coupe le papier , J'ai gagné! N ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper enveloppe la pierre, j'ai gagné! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone casse les ciseaux, j'ai gagné! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Vous avez gagné! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nLe nombre d'essais: '+ numTrials) System.out.printf (' J'ai gagné% d (%. 2f %%) . Vous avez gagné% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Bye !, J'espère que vous avez apprécié ..! ' )}}

//Production:

Commençons...
Ciseaux-Papier-Pierre
À votre tour (veuillez entrer s pour un ciseau, p pour du papier, t pour une pierre, q pour quitter):
s
C'est à mon tour: PIERRE
La pierre casse les ciseaux, j'ai gagné!
Ciseaux-Papier-Pierre
À votre tour (veuillez entrer s pour un ciseau, p pour du papier, t pour une pierre, q pour quitter):
quoi
Le nombre d'essais: 1J'ai gagné 1 (100,00%). Vous avez gagné 0 (0,00%).
Bye !, J'espère que vous avez apprécié ..!

Avec cela, nous arrivons à la fin de ce tutoriel Java Enum. J'espère que vous avez compris Enum en Java et son implémentation à travers quelques exemples en temps réel.

Maintenant que tu as compris énumération les bases de ce «Tutoriel Java Enum» par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Les cours de formation et de certification Java J2EE et SOA d'Edureka sont conçus pour les étudiants et les professionnels qui souhaitent devenir développeur Java. Le cours est conçu pour vous donner une longueur d'avance dans la programmation Java et vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Printemps .

Vous avez une question pour nous? Mentionnez-le dans la section commentaires de ce blog «Tutoriel Java Enum» et nous vous répondrons dans les plus brefs délais.