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?
- Pourquoi avons-nous besoin d'un dénombrement?
- Différences entre Enum et Class
- Exemples pratiques d'énumération
- Avantages de Enum
- Cas d'utilisation énuméré: Rock, Jeu de papier, ciseaux
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)
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ées | Les constantes de classe peuvent être remplacées |
Enum ne prend pas en charge la création d'objets | La classe prend en charge la création d'objets |
Enum ne peut pas étendre d'autres classes | Une classe peut étendre d'autres classes |
énumération cune interface d'outil | Une 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 utilisé dans Switch Case
- Héritage avec enum
- Énumération avec des valeurs personnalisées
- Énumération dans les instructions if-else-if
- Différentes méthodes utilisées avec enum
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'huiLundi
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
Masculine: 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:
Direction: 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.