Dominando Enums en Java: Guía completa de Enums y Clases Enum
Enums en Java
En este tutorial, aprenderemos sobre enums en Java. Aprenderemos a crear y usar enums y clases enum con la ayuda de ejemplos.
En Java, un enum (abreviación de enumeración) es un tipo que tiene un conjunto fijo de valores constantes. Usamos la palabra clave enum para declarar enums. Por ejemplo,
enum Tamanio { PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE }
Aquí, hemos creado un enum llamado Tamanio. Contiene valores fijos PEQUEÑO, MEDIANO, GRANDE y EXTRAGRANDE.
Estos valores dentro de las llaves se llaman constantes de enum (valores).
Ejemplo 1: Enum en Java
enum Tamanio { PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE } class Main { public static void main(String[] args) { System.out.println(Tamanio.PEQUEÑO); System.out.println(Tamanio.MEDIANO); } }
Salida
PEQUEÑO MEDIANO
Como vemos en el ejemplo anterior, usamos el nombre del enum para acceder a los valores constantes.
También podemos crear variables de tipos enum. Por ejemplo,
Tamanio tamanioPizza;
Aquí, tamanioPizza es una variable del tipo Tamanio. Solo puede asignarse con 4 valores.
tamanioPizza = Tamanio.PEQUEÑO; tamanioPizza = Tamanio.MEDIANO; tamanioPizza = Tamanio.GRANDE; tamanioPizza = Tamanio.EXTRAGRANDE;
Ejemplo 2: Enum en Java con la sentencia switch
enum Tamanio { PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE } class Test { Tamanio tamanioPizza; public Test(Tamanio tamanioPizza) { this.tamanioPizza = tamanioPizza; } public void ordenarPizza() { switch(tamanioPizza) { case PEQUEÑO: System.out.println("Ordené una pizza tamaño pequeño."); break; case MEDIANO: System.out.println("Ordené una pizza tamaño mediano."); break; default: System.out.println("No sé cuál ordenar."); break; } } } class Main { public static void main(String[] args) { Test t1 = new Test(Tamanio.MEDIANO); t1.ordenarPizza(); } }
Salida
Ordené una pizza tamaño mediano.
En el programa anterior, hemos creado un tipo enum Tamanio. Luego declaramos una variable tamanioPizza del tipo Tamanio.
Aquí, la variable tamanioPizza solo puede asignarse con 4 valores (PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE).
Observa la sentencia,
Test t1 = new Test(Tamanio.MEDIANO);
Llamará al constructor Test() dentro de la clase Test. Ahora, la variable tamanioPizza se asigna con la constante MEDIANO.
Basado en el valor, uno de los casos de la sentencia switch se ejecuta.
Clase Enum en Java
En Java, los tipos enum se consideran un tipo especial de clase. Fue introducido con el lanzamiento de Java 5.
Una clase enum puede incluir métodos y campos como las clases regulares.
enum Tamanio { constante1, constante2, …, constanteN; // métodos y campos }
Cuando creamos una clase enum, el compilador creará instancias (objetos) de cada constante de enum. Además, todas las constantes de enum son siempre public static final por defecto.
Ejemplo 3: Clase Enum en Java
enum Tamanio{ PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE; public String getTamanio() { // this se referirá al objeto PEQUEÑO switch(this) { case PEQUEÑO: return "pequeño"; case MEDIANO: return "mediano"; case GRANDE: return "grande"; case EXTRAGRANDE: return "extra grande"; default: return null; } } public static void main(String[] args) { // llamar getTamanio() // usando el objeto PEQUEÑO System.out.println("El tamaño de la pizza es " + Tamanio.PEQUEÑO.getTamanio()); } }
Salida
El tamaño de la pizza es pequeño
En el ejemplo anterior, hemos creado una clase enum Tamanio. Tiene cuatro constantes PEQUEÑO, MEDIANO, GRANDE y EXTRAGRANDE.
Dado que Tamanio es una clase enum, el compilador crea automáticamente instancias para cada constante de enum.
Aquí dentro del método main(), hemos usado la instancia PEQUEÑO para llamar al método getTamanio().
Métodos de la clase Enum en Java
Hay algunos métodos predefinidos en las clases enum que están disponibles para uso.
1. ordinal() de Enum en Java
El método ordinal() retorna la posición de una constante de enum. Por ejemplo,
ordinal(PEQUEÑO) // retorna 0
2. compareTo() de Enum
El método compareTo() compara las constantes de enum basándose en su valor ordinal. Por ejemplo,
Tamanio.PEQUEÑO.compareTo(Tamanio.MEDIANO) // retorna ordinal(PEQUEÑO) - ordinal(MEDIANO)
3. toString() de Enum
El método toString() retorna la representación en string de las constantes de enum. Por ejemplo,
PEQUEÑO.toString() // retorna "PEQUEÑO"
4. name() de Enum
El método name() retorna el nombre definido de una constante de enum en forma de string. El valor retornado por name() es final. Por ejemplo,
name(PEQUEÑO) // retorna "PEQUEÑO"
5. valueOf() de Enum en Java
El método valueOf() toma un string y retorna una constante de enum que tiene el mismo nombre de string. Por ejemplo,
Tamanio.valueOf("PEQUEÑO") // retorna constante PEQUEÑO.
6. values() de Enum
El método values() retorna un array de tipo enum conteniendo todas las constantes de enum. Por ejemplo,
Tamanio[] arrayEnum = Tamanio.values();
¿Por qué Enums en Java?
En Java, enum se introdujo para reemplazar el uso de constantes int.
Supongamos que hemos usado una colección de constantes int.
class Tamanio { public final static int PEQUEÑO = 1; public final static int MEDIANO = 2; public final static int GRANDE = 3; public final static int EXTRAGRANDE = 4; }
Aquí, el problema surge si imprimimos las constantes. Es porque solo se imprime el número lo cual podría no ser útil.
Así que, en lugar de usar constantes int, simplemente podemos usar enums. Por ejemplo,
enum Tamanio { PEQUEÑO, MEDIANO, GRANDE, EXTRAGRANDE }
Esto hace nuestro código más intuitivo.
Además, enum proporciona seguridad de tipos en tiempo de compilación.
Si declaramos una variable del tipo Tamanio. Por ejemplo,
Tamanio tamanio;
Aquí, se garantiza que la variable contendrá uno de los cuatro valores. Ahora, si intentamos pasar valores distintos a esos cuatro, el compilador generará un error.
Java
- Dominando enums en C: Definición, declaración y operaciones de banderas
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Enums en Java: Guía completa de Enums y Clases Enum
- Constructores de Enum en Java explicados con ejemplo práctico
- Dominando representaciones String en Enums de Java
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada