logo

enumeración en Java

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:



enum NombreEnum {

CONSTANTE1 CONSTANTE2 CONSTANTE3;

}



Java
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.

Java
import 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

Java
enum 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.

Java
enum 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.

Java
enum 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 ejemplo
Java
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.