En Java, Enumeraciones o Java Enum Sirve para representar un grupo de constantes con nombre en un lenguaje de programación. Las enumeraciones de Java se utilizan cuando conocemos todos los valores posibles en el momento de la compilación, como opciones en un menú, modos de redondeo, indicadores de línea de comandos, etc. No es necesario que el conjunto de constantes en un tipo de enumeración permanezca fijo para siempre.
¿Qué es la enumeración o enumeración en Java?
Una enumeración de Java es un tipo de clase. Aunque no necesitamos crear una instancia de una enumeración usando nuevo, Tiene las mismas capacidades que otras clases. Este hecho hace que la enumeración de Java sea una herramienta muy poderosa. Al igual que las clases, puedes darles constructores, agregar variables y métodos de instancia e incluso implementar interfaces.
Ejemplo de enumeración:
Los cuatro palos de una baraja de cartas pueden ser cuatro enumeradores llamados Trébol, Diamante, Corazón y Espada, pertenecientes a un tipo enumerado llamado Palo. Otros ejemplos incluyen tipos naturales enumerados (como los planetas, los días de la semana, los colores, las direcciones, etc.).
Una cosa a tener en cuenta es que, a diferencia de las clases, las enumeraciones no heredan otras clases ni pueden extenderse (es decir, convertirse en superclase). También podemos agregarle variables, métodos y constructores. El objetivo principal de una enumeración es definir nuestros propios tipos de datos (Tipos de datos enumerados).
Declaración de enumeración en Java
La declaración de enumeración se puede realizar fuera de una clase o dentro de una clase, pero no dentro de un método.
1. Declaración fuera de clase
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);> >}> }> |
>
>Producción
RED>
2. Declaración dentro de una clase
Java
pitón camelcase
// 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);> >}> }> |
>
>Producción
RED>
- La primera línea dentro de la enumeración debe ser una lista de constantes y luego otras cosas como métodos, variables y constructores.
- De acuerdo a Convenciones de nomenclatura de Java , se recomienda nombrar la constante con todas las letras mayúsculas
Propiedades de Enum en Java
Hay ciertas propiedades seguidas por Enum como se menciona a continuación:
- Cada enumeración se implementa internamente mediante Class.
- Cada constante de enumeración representa una objeto de tipo enumeración.
- El tipo de enumeración se puede pasar como argumento a cambiar declaraciones.
- Cada constante de enumeración es siempre implícita. final estática pública . Ya que es estático , podemos acceder a él usando la enumeración Nombre. Ya que es final , no podemos crear enumeraciones secundarias.
- Podemos declarar el método principal() dentro de la enumeración. Por lo tanto, podemos invocar la enumeración directamente desde el símbolo del sistema.
A continuación se muestra la implementación de las propiedades anteriores:
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();> >}> }> |
>
>
material angularProducción
Mondays are bad.>
Programas de enumeración de Java
1. Función principal dentro de Enum
Podemos declarar una función principal dentro de una enumeración, ya que podemos invocar la enumeración directamente desde el símbolo del sistema.
A continuación se muestra la implementación de la propiedad 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);> >}> }> |
>
>Producción
RED>
2. Recorrer Enum
Podemos iterar sobre Enum usando valores () y bucle. La función value() devuelve una matriz de valores Enum como constantes mediante las cuales podemos iterar sobre los valores.
A continuación se muestra la implementación del bucle a través de Enum:
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);> >}> >}> }> |
>
>Producción
RED GREEN BLUE>
3. Enum en una declaración de cambio
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'>);> >}> >}> }> |
Pete Davidson nacionalidad
>
>Producción
Other color observed>
Enumeración y herencia
- Todas las enumeraciones se extienden implícitamente clase java.lang.Enum . Como una clase sólo puede extenderse uno parent en Java, una enumeración no puede extender nada más.
- método toString() se anula en clase java.lang.Enum , que devuelve el nombre de la constante de enumeración.
- enum puede implementar muchas interfaces.
Enumeración y constructor
- Enum puede contener un constructor y se ejecuta por separado para cada constante de enumeración en el momento de cargar la clase de enumeración.
- No podemos crear objetos enum explícitamente y, por lo tanto, no podemos invocar el constructor enum directamente.
Enumeración y métodos
Enum puede contener ambos concreto métodos y abstracto métodos. Si una clase enum tiene un método abstracto, entonces cada instancia de la clase enum debe implementarlo.
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();> >}> }> |
>
>Producción
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Preguntas frecuentes sobre Enum en Java
P1. ¿Podemos crear la instancia de Enum con la nueva palabra clave?
Años:
No, no podemos crear la instancia de la palabra clave Enum porque solo contiene constructores privados.
P2. ¿Podemos tener un método abstracto en Enum?
Años:
Sí, tenemos un método abstracto en Enum.
P3. ¿Cuál es el propósito del método valores() en la enumeración?
Años:
En Java, el método de valores () se puede utilizar para devolver todos los valores presentes dentro de la enumeración.
P4. ¿Cuál es el propósito del método valueOf() en la enumeración?
Años:
El método valueOf() devuelve la constante de enumeración del valor de cadena especificado, si existe.
P5. ¿Cuál es el propósito del método ordinal() en la enumeración?
Años:
Al utilizar el método ordinal(), se puede encontrar cada índice constante de enumeración, al igual que un índice de matriz.
P6. Escriba un programa en Java para describir el uso de los métodos value(), valueOf() y ordinal() en la enumeración.
Años:
ProducciónJava
// 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'));>>}>}>>cambiar nombre directorio linux>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Siguiente artículo sobre enumeración: Enum con valor personalizado en Java