En Java, las enumeraciones (enums) son un tipo especial que se utiliza para definir un grupo de constantes con nombre.
ejecutar scripts en Linux
- Las enumeraciones ayudan a mejorar la legibilidad, el mantenimiento y la seguridad de tipos en los programas al asignar nombres significativos a valores enteros.
- Principalmente útil cuando tenemos un pequeño conjunto de valores posibles para un elemento como direcciones, días de la semana, etc.
Creando una enumeración
Sintaxis:
Javaenum NombreEnum {
CONSTANTE1 CONSTANTE2 CONSTANTE3;
}
enum TrafficLight { RED GREEN YELLOW; } public class Test{ public static void main(String[] args){ TrafficLight x = TrafficLight.RED; System.out.println(x); } }
Producción
RED
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
Como hemos visto en el ejemplo anterior, las enumeraciones se pueden declarar fuera de una clase y se puede acceder a ellas directamente
2. Declaración dentro de una clase
Las enumeraciones también se pueden declarar dentro de una clase pero no dentro de un método.
Java
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
Propiedades de Enum en Java
Hay ciertas propiedades seguidas por Enum como se menciona a continuación:
saira banú actor
- Tipo de clase: Implementado internamente como una clase.
- Constantes de enumeración: Cada constante es un objeto del tipo enum.
- Soporte de interruptor: Se puede utilizar en declaraciones de cambio.
- Modificadores implícitos: Las constantes son finales estáticas públicas.
- Herencia: Las enumeraciones no pueden ampliar las clases, pero pueden implementar interfaces.
Enum en una declaración de cambio
Las enumeraciones se pueden usar en declaraciones de cambio para manejar diferentes casos según las constantes de enumeración.
Javaimport java.io.*; class GFG{ // Enum Declared enum Color { RED GREEN BLUE YELLOW; } 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'); break; case GREEN: System.out.println('Green color'); break; case BLUE: System.out.println('Blue color'); break; default: System.out.println('Other color'); } } }
Producción
Other color
Enum con métodos y constructor
Las enumeraciones pueden tener constructores y métodos ejecutados por separado para cada constante
Javaenum Color{ RED GREEN BLUE; private Color(){ System.out.println('Constructor called for: ' + this); } public void display(){ System.out.println('Color is: ' + this); } } public class Test{ public static void main(String[] args){ Color c1 = Color.RED; c1.display(); } }
Producción
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED
Enum con métodos abstractos
Las enumeraciones pueden declarar métodos abstractos que cada constante debe implementar.
Javaenum Day{ MONDAY{ public String getNumber(){ return '1st day'; } } FRIDAY{ public String getNumber(){ return '5th day'; } }; public abstract String getNumber(); } public class EnumTest { public static void main(String[] args){ System.out.println(Day.MONDAY.getNumber()); System.out.println(Day.FRIDAY.getNumber()); } }
Producción
1st day 5th day
Iterando enumeraciones usando valores()
Utilice EnumType.values() para recorrer todas las constantes de enumeración.
Javaenum Color{ RED GREEN BLUE; } public class Test{ public static void main(String[] args){ for (Color c : Color.values()){ System.out.println(c); } } }
Producción
RED GREEN BLUE
Enum y EnumSet (iteración de rango específico)
EnumSet.range() permite la iteración sobre un rango específico de constantes de enumeración.
java hacer mientras ejemploJava
import java.util.EnumSet; public class EnumSetExample{ enum Day{ SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY; } public static void main(String[] args){ EnumSet<Day> workDays = EnumSet.range(Day.TUESDAY Day.FRIDAY); for (Day d : workDays){ System.out.println(d); } } }
Producción
TUESDAY WEDNESDAY THURSDAY FRIDAY
Crear una clase con un miembro de enumeración
Podemos combinar enumeraciones con clases regulares para organizar la lógica de su programa. Una enumeración puede ser una variable miembro de una clase y los métodos pueden realizar acciones basadas en el valor de la enumeración.
Java/*package whatever //do not write package name here */ import java.io.*; enum Day { MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY } public class EnumTest { // Enum member variable Day day; // constructor which takes enum value public EnumTest(Day day) { this.day = day; } // method to execute action as per enum value public void tellItLikeItIs() { switch (day) { case MONDAY: System.out.println('Mondays are tough'); break; case TUESDAY: System.out.println('Tuesday are better'); break; case WEDNESDAY: System.out.println('Wednesday are okay'); break; case THURSDAY: System.out.println('Thursdays are hopeful'); break; case FRIDAY: System.out.println('Fridays are exciting'); break; case SATURDAY: System.out.println('Saturdays are relaxing'); break; case SUNDAY: System.out.println('Sunday are for rest'); break; default: System.out.println('Everyday are good'); break; } } public static void main(String[] args) { EnumTest firstDay = new EnumTest(Day.MONDAY); firstDay.tellItLikeItIs(); EnumTest thirdDay = new EnumTest(Day.WEDNESDAY); thirdDay.tellItLikeItIs(); EnumTest fifthDay = new EnumTest(Day.FRIDAY); fifthDay.tellItLikeItIs(); EnumTest sixthDay = new EnumTest(Day.SATURDAY); sixthDay.tellItLikeItIs(); EnumTest seventhDay = new EnumTest(Day.SUNDAY); seventhDay.tellItLikeItIs(); } }
Producción
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest
Explicación:
- La clase EnumTest en el código anterior se crea con un miembro de tipo Día. Tiene un constructor que toma Day enum como argumento y lo asigna.
- La clase tiene el método tellItLikeItIs() que imprime el mensaje según el valor del día.
- El método principal incluye objetos de EnumTest que utilizan diferentes valores de enumeración de Día y llaman al método tellItLikeItIs() en cada uno.
NOTA: La nueva palabra clave se usa porque EnumTest es una clase normal, no una enumeración, por lo que creamos instancias y pasamos el valor de enumeración a su constructor.