Trabajando con Enum en Java
Pasemos a otra estructura de datos bastante interesante y, lo más importante, distintiva: enum.
Veamos cómo crear un enum. La creación de un enum difiere significativamente de otras estructuras de datos, ya que se realiza a nivel de clase:
DaysOfTheWeek.java
123456789public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
Aplicación práctica
Enum es necesario para que puedas referirte fácilmente a la constante. Dado que es una lista de constantes, se accede de la siguiente manera:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Aquí, simplemente accedemos a la constante del enum para entender qué día es hoy. En lugar de crear muchas constantes diferentes, solo almacenamos un arreglo de constantes en el enum. Esto es conveniente y muy práctico. Por ejemplo, en uno de los desafíos anteriores, podríamos haber almacenado nombres de departamentos en un enum y usar la constante como clave.
Veamos un ejemplo:
Main.java
12345678910111213141516171819202122232425262728293031323334353637package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }
Conversión a un arreglo
Además, es posible obtener todos los valores constantes de un enum como un arreglo utilizando el método values().
A continuación, se muestra un ejemplo:
Main.java
12345678910111213package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
Declaración de campos y métodos en enums
También es posible declarar campos y métodos en enums.
Consideremos un ejemplo de un semáforo:
Main.java
12345678910111213enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }
En los enums, los métodos funcionan de manera ligeramente diferente. Dado que son constantes, no pueden modificarse. Por lo tanto, se agregan campos en el constructor de este enum, y luego se define el método getAction() que devuelve inmediatamente la acción que debe realizarse para un semáforo específico. Como se puede observar, se especifica esta acción directamente en el enum al enumerar las constantes.
Veamos un ejemplo de cómo llamar a dicho método:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }
Como puede observar, con la ayuda del método getAction(), obtuvimos de inmediato la acción que se debe realizar para un semáforo específico. Puede cambiar RED por cualquier otro color y ver qué sucede.
Los métodos y campos en los enums no se utilizan con tanta frecuencia, pero esta funcionalidad está presente, por lo que es conveniente conocerla. Puede leer más sobre enums en la Documentación oficial de Java
Ventajas de Enum en Java
- Mejora de la legibilidad: reemplazar constantes numéricas y literales de cadena por valores con nombre hace que el código sea más legible;
- Seguridad de tipo: el compilador garantiza la seguridad de tipo al trabajar con enums, evitando errores relacionados con el tipo;
- Conjunto limitado de valores: los enums proporcionan un conjunto fijo de valores, lo que hace que el código sea más predecible;
- Capacidad de agregar métodos y campos: los enums pueden contener métodos y campos, lo que los hace más potentes en comparación con las enumeraciones simples.
1. ¿Qué es un enum en Java?
2. ¿Cómo se declara un enum llamado Months que representa los meses del año?
3. ¿Cómo se puede obtener un arreglo con todos los valores de un enum llamado Colors?
4. ¿Cuál de las siguientes afirmaciones sobre el siguiente enum es verdadera?
5. ¿Cómo se compararía correctamente currentStatus con Status.ACTIVE? Considere el siguiente enum:
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What is the syntax for creating an enum in Java?
Can you show an example of how to use enums in a Java program?
What are some common use cases for enums in Java?
Genial!
Completion tasa mejorada a 4
Trabajando con Enum en Java
Desliza para mostrar el menú
Pasemos a otra estructura de datos bastante interesante y, lo más importante, distintiva: enum.
Veamos cómo crear un enum. La creación de un enum difiere significativamente de otras estructuras de datos, ya que se realiza a nivel de clase:
DaysOfTheWeek.java
123456789public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
Aplicación práctica
Enum es necesario para que puedas referirte fácilmente a la constante. Dado que es una lista de constantes, se accede de la siguiente manera:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Aquí, simplemente accedemos a la constante del enum para entender qué día es hoy. En lugar de crear muchas constantes diferentes, solo almacenamos un arreglo de constantes en el enum. Esto es conveniente y muy práctico. Por ejemplo, en uno de los desafíos anteriores, podríamos haber almacenado nombres de departamentos en un enum y usar la constante como clave.
Veamos un ejemplo:
Main.java
12345678910111213141516171819202122232425262728293031323334353637package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }
Conversión a un arreglo
Además, es posible obtener todos los valores constantes de un enum como un arreglo utilizando el método values().
A continuación, se muestra un ejemplo:
Main.java
12345678910111213package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
Declaración de campos y métodos en enums
También es posible declarar campos y métodos en enums.
Consideremos un ejemplo de un semáforo:
Main.java
12345678910111213enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }
En los enums, los métodos funcionan de manera ligeramente diferente. Dado que son constantes, no pueden modificarse. Por lo tanto, se agregan campos en el constructor de este enum, y luego se define el método getAction() que devuelve inmediatamente la acción que debe realizarse para un semáforo específico. Como se puede observar, se especifica esta acción directamente en el enum al enumerar las constantes.
Veamos un ejemplo de cómo llamar a dicho método:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }
Como puede observar, con la ayuda del método getAction(), obtuvimos de inmediato la acción que se debe realizar para un semáforo específico. Puede cambiar RED por cualquier otro color y ver qué sucede.
Los métodos y campos en los enums no se utilizan con tanta frecuencia, pero esta funcionalidad está presente, por lo que es conveniente conocerla. Puede leer más sobre enums en la Documentación oficial de Java
Ventajas de Enum en Java
- Mejora de la legibilidad: reemplazar constantes numéricas y literales de cadena por valores con nombre hace que el código sea más legible;
- Seguridad de tipo: el compilador garantiza la seguridad de tipo al trabajar con enums, evitando errores relacionados con el tipo;
- Conjunto limitado de valores: los enums proporcionan un conjunto fijo de valores, lo que hace que el código sea más predecible;
- Capacidad de agregar métodos y campos: los enums pueden contener métodos y campos, lo que los hace más potentes en comparación con las enumeraciones simples.
1. ¿Qué es un enum en Java?
2. ¿Cómo se declara un enum llamado Months que representa los meses del año?
3. ¿Cómo se puede obtener un arreglo con todos los valores de un enum llamado Colors?
4. ¿Cuál de las siguientes afirmaciones sobre el siguiente enum es verdadera?
5. ¿Cómo se compararía correctamente currentStatus con Status.ACTIVE? Considere el siguiente enum:
¡Gracias por tus comentarios!