A Java, Enumeracions o Java Enum serveixen per representar un grup de constants anomenades en un llenguatge de programació. Les enumeracions Java s'utilitzen quan coneixem tots els valors possibles en el moment de la compilació, com ara les opcions d'un menú, els modes d'arrodoniment, les marques de la línia d'ordres, etc. El conjunt de constants d'un tipus d'enumeració no cal que es mantingui fix durant tot el temps.
Què és l'enumeració o enumeració a Java?
Una enumeració Java és un tipus de classe. Tot i que no hem d'instanciar una enumeració utilitzant nou, té les mateixes capacitats que altres classes. Aquest fet fa que l'enumeració de Java sigui una eina molt potent. Igual que les classes, podeu donar-los constructors, afegir variables d'instància i mètodes, i fins i tot implementar interfícies.
Exemple d'enumeració:
Els 4 patges d'una baralla de cartes poden ser 4 enumeradors anomenats Club, Diamond, Heart i Spade, que pertanyen a un tipus enumerat anomenat Suit. Altres exemples inclouen tipus enumerats naturals (com els planetes, els dies de la setmana, els colors, les adreces, etc.).
Una cosa a tenir en compte és que, a diferència de les classes, les enumeracions no hereten altres classes ni es poden estendre (és a dir, esdevenen superclasses). També hi podem afegir variables, mètodes i constructors. L'objectiu principal d'una enumeració és definir els nostres propis tipus de dades (Tipus de dades enumerades).
Declaració d'enum en Java
La declaració d'enum es pot fer fora d'una classe o dins d'una classe, però no dins d'un mètode.
1. Declaració fora de la classe
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);> >}> }> |
>
>Sortida
RED>
2. Declaració dins d'una classe
Java
.04 com a fracció
// 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);> >}> }> |
>
>Sortida
RED>
- La primera línia dins de la enumeració hauria de ser una llista de constants i després altres coses com mètodes, variables i constructors.
- D'acord amb Convencions de denominació de Java , es recomana que anomenem constant amb totes les majúscules
Propietats d'Enum a Java
Hi ha certes propietats seguides d'Enum, com s'esmenta a continuació:
- Cada enumeració s'implementa internament mitjançant Class.
- Cada constant enumeració representa un objecte de tipus enumeració.
- El tipus d'enumeració es pot passar com a argument a interruptor declaracions.
- Cada constant enumeració és sempre implícita final estàtica pública . Ja que ho és estàtica , hi podem accedir mitjançant l'enum Nom. Ja que ho és final , no podem crear enumeracions secundàries.
- Podem declarar el mètode main(). dins de l'enum. Per tant, podem invocar la enumeració directament des del símbol del sistema.
A continuació es mostra la implementació de les propietats anteriors:
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();> >}> }> |
>
>
data d'utilitat javaSortida
Mondays are bad.>
Programes d'enumeració de Java
1. Funció principal dins Enum
Podem declarar una funció principal dins d'una enumeració, ja que podem invocar la enumeració directament des del símbol del sistema.
A continuació es mostra la implementació de la propietat anterior:
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);> >}> }> |
>
>Sortida
RED>
2. Recorre Enum
Podem iterar sobre l'Enum utilitzant valors ( ) i bucle. La funció values() retorna una matriu de valors Enum com a constants amb les quals podem iterar sobre els valors.
A continuació es mostra la implementació del bucle mitjançant Enum:
Java
paraula clau volàtil 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);> >}> >}> }> |
>
>Sortida
RED GREEN BLUE>
3. Enum en una declaració 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'>);> >}> >}> }> |
>
>Sortida
Other color observed>
Enum i herència
- Totes les enumeracions s'estenen implícitament java.lang.Enum classe . Com a classe només es pot estendre un pare a Java, una enumeració no pot estendre cap altra cosa.
- mètode toString(). està anul·lat a java.lang.Enum classe , que retorna el nom de la constant enumeració.
- enum pot implementar moltes interfícies.
Enum i Constructor
- Enum pot contenir un constructor i s'executa per separat per a cada constant enum en el moment de la càrrega de la classe enum.
- No podem crear objectes enumeració explícitament i, per tant, no podem invocar directament el constructor enumeració.
Enum i mètodes
Enum pot contenir tots dos formigó mètodes i abstracte mètodes. Si una classe enum té un mètode abstracte, llavors cada instància de la classe enum l'ha d'implementar.
Java
// 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();> >}> }> |
>
>Sortida
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Preguntes freqüents sobre Enum a Java
Q1. Podem crear la instància d'Enum amb la paraula clau nova?
Anys:
No, no podem crear la instància de la paraula clau Enum perquè només conté constructors privats.
P2. Podem tenir un mètode abstracte a l'Enum?
Anys:
Sí, tenim un mètode abstracte a Enum.
P3. Quin és l'objectiu del mètode values() a la enumeració?
Anys:
A Java, el mètode values( ) es pot utilitzar per retornar tots els valors presents a l'enum.
P4. Quin és l'objectiu del mètode valueOf() a l'enum?
Anys:
El mètode valueOf() retorna la constant enumeració del valor de cadena especificat si existeix.
P5. Quin és l'objectiu del mètode ordinal() a l'enum?
Anys:
Mitjançant el mètode ordinal(), es pot trobar cada índex constant d'enumeració, igual que un índex de matriu.
P6. Escriu un programa en Java per descriure l'ús dels mètodes values(), valueOf() i ordinal() a la enumeració.
Anys:
SortidaJava
// 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'));>>}>}>>ordenar per aleatori en sql>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Següent article sobre enumeració: Enum amb valor personalitzat a Java