Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Trabajando con Enum en Java | Características y Técnicas Avanzadas de Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Estructuras de Datos en Java

bookTrabajando 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

DaysOfTheWeek.java

copy
123456789
public 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

Main.java

copy
123456789101112131415161718
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package 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

Main.java

copy
12345678910111213
package 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

Main.java

copy
12345678910111213
enum 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

Main.java

copy
1234567891011121314151617181920212223
package 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

  1. 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;
  2. Seguridad de tipo: el compilador garantiza la seguridad de tipo al trabajar con enums, evitando errores relacionados con el tipo;
  3. Conjunto limitado de valores: los enums proporcionan un conjunto fijo de valores, lo que hace que el código sea más predecible;
  4. 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:

question mark

¿Qué es un enum en Java?

Select the correct answer

question mark

¿Cómo se declara un enum llamado Months que representa los meses del año?

Select the correct answer

question mark

¿Cómo se puede obtener un arreglo con todos los valores de un enum llamado Colors?

Select the correct answer

question mark

¿Cuál de las siguientes afirmaciones sobre el siguiente enum es verdadera?

Select the correct answer

question mark

¿Cómo se compararía correctamente currentStatus con Status.ACTIVE? Considere el siguiente enum:

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

bookTrabajando 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

DaysOfTheWeek.java

copy
123456789
public 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

Main.java

copy
123456789101112131415161718
package 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

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package 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

Main.java

copy
12345678910111213
package 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

Main.java

copy
12345678910111213
enum 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

Main.java

copy
1234567891011121314151617181920212223
package 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

  1. 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;
  2. Seguridad de tipo: el compilador garantiza la seguridad de tipo al trabajar con enums, evitando errores relacionados con el tipo;
  3. Conjunto limitado de valores: los enums proporcionan un conjunto fijo de valores, lo que hace que el código sea más predecible;
  4. 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:

question mark

¿Qué es un enum en Java?

Select the correct answer

question mark

¿Cómo se declara un enum llamado Months que representa los meses del año?

Select the correct answer

question mark

¿Cómo se puede obtener un arreglo con todos los valores de un enum llamado Colors?

Select the correct answer

question mark

¿Cuál de las siguientes afirmaciones sobre el siguiente enum es verdadera?

Select the correct answer

question mark

¿Cómo se compararía correctamente currentStatus con Status.ACTIVE? Considere el siguiente enum:

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 1
some-alt