El Enumeración en Java es un tipo de datos que contiene un conjunto fijo de constantes.
Se puede utilizar para los días de la semana (DOMINGO, LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES y SÁBADO), direcciones (NORTE, SUR, ESTE y OESTE), temporada (PRIMAVERA, VERANO, INVIERNO y OTOÑO u OTOÑO). ), colores (ROJO, AMARILLO, AZUL, VERDE, BLANCO y NEGRO), etc. De acuerdo con las convenciones de nomenclatura de Java, debemos tener todas las constantes en letras mayúsculas. Entonces, tenemos constantes de enumeración en letras mayúsculas.
Las enumeraciones de Java se pueden considerar como clases que tienen un conjunto fijo de constantes (una variable que no cambia). Las constantes de enumeración de Java son estáticas y finales implícitamente. Está disponible desde JDK 1.5.
subprograma subprograma
Las enumeraciones se utilizan para crear nuestro propio tipo de datos, como clases. El enumeración El tipo de datos (también conocido como tipo de datos enumerados) se utiliza para definir una enumeración en Java. A diferencia de C/C++, enum en Java es más poderoso . Aquí, podemos definir una enumeración ya sea dentro o fuera de la clase.
Java Enum hereda internamente el clase de enumeración , por lo que no puede heredar ninguna otra clase, pero puede implementar muchas interfaces. Podemos tener campos, constructores, métodos y métodos principales en la enumeración de Java.
Puntos para recordar para Java Enum
- Enum mejora la seguridad de tipos
- Enum se puede usar fácilmente en switch
- Enum se puede atravesar
- Enum puede tener campos, constructores y métodos.
- Enum puede implementar muchas interfaces pero no puede extender ninguna clase porque extiende internamente la clase Enum
Ejemplo simple de enumeración de Java
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}Pruébalo ahora
Producción:
WINTER SPRING SUMMER FALL
Veamos otro ejemplo de enumeración de Java en el que utilizamos los métodos value(), valueOf() y ordinal() de enumeración de Java.
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
Producción:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
Nota: El compilador de Java agrega internamente los métodos value(), valueOf() y ordinal() dentro de la enumeración en el momento de la compilación. Crea internamente una clase estática y final para la enumeración.
¿Cuál es el propósito del método valores() en la enumeración?
El compilador de Java agrega internamente el método value() cuando crea una enumeración. El método value() devuelve una matriz que contiene todos los valores de la enumeración.
¿Cuál es el propósito del método valueOf() en la enumeración?
El compilador de Java agrega internamente el método valueOf() cuando crea una enumeración. El método valueOf() devuelve el valor de una enumeración constante dada.
¿Cuál es el propósito del método ordinal() en la enumeración?
El compilador de Java agrega internamente el método ordinal() cuando crea una enumeración. El método ordinal() devuelve el índice del valor de enumeración.
Definición de enumeración de Java
La enumeración se puede definir dentro o fuera de la clase porque es similar a una clase. El punto y coma (;) al final de las constantes de enumeración son opcionales. Por ejemplo:
bash mientras bucle
enum Season { WINTER, SPRING, SUMMER, FALL }
O,
enum Season { WINTER, SPRING, SUMMER, FALL; }
Ambas definiciones de enumeración de Java son las mismas.
Ejemplo de enumeración de Java: clase externa definida
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}Pruébalo ahora
Producción:
WINTER
Ejemplo de enumeración de Java: clase interna definida
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}Pruébalo ahora
Producción:
WINTER
Ejemplo de Java Enum: método principal dentro de Enum
Si coloca el método main() dentro de la enumeración, puede ejecutar la enumeración directamente.
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
Producción:
WINTER
Inicializando valores específicos para las constantes de enumeración
Las constantes de enumeración tienen un valor inicial que comienza en 0, 1, 2, 3, etc. Pero podemos inicializar el valor específico de las constantes de enumeración definiendo campos y constructores. Como se especificó anteriormente, Enum puede tener campos, constructores y métodos.
Ejemplo de especificación del valor inicial de las constantes de enumeración
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}Pruébalo ahora
Producción:
WINTER 5 SPRING 10 SUMMER 15 FALL 20
El constructor del tipo enum es privado. Si no declara que el compilador privado crea internamente un constructor privado.
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
Código interno generado por el compilador para el ejemplo anterior de tipo de enumeración
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
¿Podemos crear la instancia de Enum mediante una nueva palabra clave?
No, porque contiene únicamente constructores privados. |
¿Podemos tener un método abstracto en Enum?
¡Sí, claro! podemos tener métodos abstractos y podemos proporcionar la implementación de estos métodos.
Java Enum en una declaración de cambio
Podemos aplicar enum en la declaración de cambio como en el ejemplo dado:
agregando a la matriz java
Ejemplo de aplicación de Enum en una declaración de cambio
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}Pruébalo ahora
Producción:
monday