java enum java enumeration tutorial with examples
Aquest tutorial es detallarà sobre la classe i el constructor de Java Enum. Aprendrem a utilitzar Enum a través de diversos exemples de programació de Java:
Es tracta d’una classe especial l’explicació de la qual es proporcionarà amb detall. Es donarà una visió de la classe Java Enum juntament amb la llista de mètodes que admet.
En aquest tutorial s’inclouen els programes suficients que implementen els conceptes Java enum i algunes de les preguntes més freqüents que es poden fer durant les entrevistes.
=> Consulteu aquí per veure la sèrie de formació Java per a tothom.
Què aprendreu:
Enumeració de Java
Una enumeració Java no és res més que una llista de variables d’instància, mètodes o constructors. Es tracta d’un grup de constants. El concepte d’enumeració es va introduir a JDK5. La propietat predeterminada de totes les constants d’enumeració és pública, estàtica i final.
paraula clau enum
L’enumeració es crea mitjançant una paraula clau anomenada “ enum '.
A continuació es mostra la sintaxi amb la qual podem crear una enumeració.
Sintaxi:
enum nom_tip_enumerat
{
enumerador1, enumerador2, ... enumeradorN;
}
Nota: enum només es pot definir dins d'una classe o interfície de nivell superior o en un context estàtic. No hauria d'estar dins d'un mètode.
enum Exemple
En aquest exemple, inicialitzarem quatre enumeradors, és a dir, pala, cor, diamant i club que pertanyen a un tipus enumerat anomenat cartes.
Després, intentarem imprimir cadascun d’aquests enumeradors.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Sortida:
Classe Enum
Una cosa que us heu d’haver fixat en l’exemple anterior (veure comentaris) és que no vam utilitzar un 'Paraula clau nova' mentre instancia. Tot i que les enumeracions també defineixen una classe Enum i els constructors, no fan servir una paraula clau nova.
Podem utilitzar els enumeradors definits de la mateixa manera que el primitiu. Enum és una classe genèrica i totes les enumeracions hereten Enum.
Sintaxi:
// E és el tipus d’enumeració.
classe Enum
Com utilitzar Enum a Java
Vegem com utilitzar Enum en diversos escenaris amb l'ajut d'exemples de Java:
Dins d’una classe
Enum es pot declarar dins o fora (exemple de paraula clau enum) d'una classe però no dins d'un mètode. Aquí, demostrarem com es declara enum dins d’una classe.
A l'exemple següent , hem creat una enumeració dins d'una classe i després hem obtingut el valor o enumerador amb l'ajut d'una variable de referència a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Sortida:
Iterant Enum mitjançant bucles
Aquí, discutirem com podem fer un bucle a través d’un enum. Hem declarat l'enumeració amb quatre enumeradors (fora d'una classe). A continuació, hem inicialitzat un per a cada bucle (dins d’una classe) i hem intentat obtenir el valor dels enumeradors.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Sortida:
Les consultes sql practiquen preguntes amb respostes
En if-else
Al programa següent, hem creat una enumeració amb tres enumeradors diferents i després hem emmagatzemat l'enumerador a la variable de referència per a un dels enumeradors especificats.
A continuació, hem començat la comprovació de la condició if on hem implementat dues condicions especificades amb OR de manera que si es compleix una d'aquestes condicions, s'imprimirà la sentència especificada a la condició if.
En cas contrari, imprimirà la declaració especificada a la condició else.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Sortida:
A la declaració del commutador
Al programa següent, hem creat una enumeració amb quatre enumeradors. Després, vam emmagatzemar un dels enumeradors a la variable de referència. Després, vam inicialitzar una instrucció Switch i vam comprovar cadascun d’aquests enumeradors.
Quan es produeixi aquest enumerador en particular, imprimirà la declaració especificada en el cas concret.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Sortida:
Camp i mètodes d'enum
Camp Enum
En aquesta secció s’explicarà detalladament el camp enum. Podem afegir camps a l'enum de Java i cada enumerador obté aquests camps. El valor del camp s'ha d'assignar al constructor de l'enum.
A la sintaxi següent, podem veure que s’ha definit una enumeració amb tres enumeradors. Al costat de cada enumerador, hem definit un camp de tipus int. ( Per exemple. - (3), (2) i (1) respectivament).
Això resumeix que Java enum té un constructor que pren una int. Aquest constructor estableix el camp int. Quan es defineix un enumerador, aquest valor int (especificat per a aquest enumerador) es passa al constructor.
Sintaxi:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Nota: Per exemple, al camp Enum, consulteu la secció ' Enum Constructor '.
Mètodes Enum
# 1) nom ()
public final String name (): retorna el nom de la constant que invoca (sense canvis ni sense canvis).
# 2) és igual a ()
public final booleà és igual a (Objecte altre): retorna cert si obj i l'objecte invocador fan referència a la mateixa constant.
# 3) a cadena
public String toString (): retorna el nom de la constant que invoca. No coincideix necessàriament amb el nom utilitzat a la declaració de l’enumeració.
# 4) clonar
clon d'objecte final protegit ()
llança CloneNotSupportedException: això significa que l'enumeració llançarà una excepció quan s'intenti clonar.
# 5) hashCode ()
public final int hashCode (): retorna el codi de hash de l'objecte que invoca.
# 6) finalize ()
protected final void finalize (): la classe enum no pot tenir mètodes finalitzats. Sense valor de retorn.
# 7) compareTo ()
public final int compareTo (E obj): es compara l'enum amb l'objecte especificat obj. Torna negatiu si l'objecte és inferior a l'objecte especificat. Torna positiu si aquest objecte és superior a l'objecte especificat obj i torna zero si l'object especificat és igual a aquest objecte.
# 8) getDeclaringClass
public final Class getDeclaringClass (): retorna el tipus d’enumeració (també conegut com a classe declarant enum) del qual és membre la constant invocadora.
# 9) ordinal (), values () i valueOf ()
Tots aquests mètodes formen part del paquet java.lang.Enum . El mètode ordinal () retorna l'ordre de la constant d'enumeració en funció de l'índex de la constant.
El mètode values () retorna tots els valors presents a l’enumeració. El mètode valueOf (String) retorna la constant d’enumeració de la cadena d’entrada. Si la cadena especificada no coincideix amb la constant, llançarà IllegalArgumentException.
A continuació es mostra l'exemple de programació on hem utilitzat el mateix exemple (com a exemple de paraula clau enum) i hem implementat el concepte de tots tres mètodes.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Sortida:
Enum Constructor
Enum (com també és una classe) admet el constructor per passar dades durant la creació d'enumeradors o també coneguts com a constants enum.
La propietat principal d'un constructor enum és que són paquets privats o privats. Això significa que són accessibles dins d'una classe o dins d'un paquet.
Vegem l'exemple següent. Aquí hem fet ús tant del mètode com del constructor. En primer lloc, hem creat una enumeració anomenada 'jugadors' que té cinc enumeradors i el camp.
A continuació, tenim un constructor i un mètode que retornarà el nombre de carreres anotades per cada jugador o enumerador o constant d'enum.
Després, tenim la classe principal en què hem utilitzat per a cada bucle amb el mètode values () per emmagatzemar i iterar cada enumerador. A més, hem anomenat el mètode per al nombre de carreres anotades per cada jugador.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Sortida:
Preguntes freqüents
Q # 1) Quina diferència hi ha entre Iterator i Enumeration a Java?
Resposta: A continuació es mostra la diferència entre Iterator i Enumeration.
Iterador | Enumeració |
---|---|
És un cursor genèric que s'utilitza per iterar elements i és aplicable a tota la classe de col·lecció. | No és un cursor genèric perquè només és aplicable a classes heretades com Enum. Permís de lectura només per a una classe de col·lecció. |
Alguns dels mètodes són hasNext (), next () per a la iteració. | Alguns dels mètodes són hasMoreElements (), nextElement () per a la iteració. |
Podem eliminar l'element d'una col·lecció mitjançant l'iterador. | No podem eliminar l'element d'una col·lecció mitjançant Enumeration perquè només té permís de lectura. |
Q # 2) Com Enum admet l’herència?
Resposta: Afterall Enum també és una classe en Java, de manera que ha de suportar Inheritance, que és un principi bàsic d’OOPS. Totes les enumeracions amplien la classe java.lang.Enum. Com que una classe només pot estendre un sol pare, la classe Enum no n'extén cap altra.
El toString () que forma part de la classe Enum (que s’explica a la secció Mètode Enum) s’anul·la a la classe java.lang.Enum.
Conclusió
En aquest tutorial, hem debatut sobre les enumeracions, enumeradors, la classe Java Enum i la paraula clau enum amb exemples i explicacions adequats sempre que sigui necessari. A més, hem donat una idea dels mètodes importants associats a la classe Enum amb el camp enum.
S'ha proporcionat una visió del constructor, enum amb if-else, switch i bucles.
=> Visiteu aquí per aprendre Java des de zero.
Lectura recomanada
- Tutorial de classe de Java Scanner amb exemples
- Java Integer i Java BigInteger Class amb exemples
- Tutorial Java Float amb exemples de programació
- Què és Java Vector | Tutorial de Java Vector Class amb exemples
- TreeMap a Java: tutorial amb exemples de Java TreeMap
- Java Double - Tutorial amb exemples de programació
- Tutorial de classe Java Array: classe java.util.Arrays amb exemples
- Conceptes de C #: constructor, destructor, classe estàtica, Struct & Enum