fbpx

Como crear e implementar las Enum en Java

En esta publicación te mostrare que es una Enum en Java, para que sirve, algunas funcionalidades y ejemplos prácticos. Sin más que decir, vamos a lo que nos interesa en este curso de java.

¿Que son y para que sirven las famosas Java Enum?

Las Enum en java son tipos de datos especiales que le permiten a una variable comportarse como un conjunto de constantes predefinidas. También son conocidas como tipos enumerados (Enum Types) que se usan para restringir el contenido de una variable.

El valor de la variable tiene que ser uno del conjunto de valores que fue previamente definida para ella. Un ejemplo para el uso de ENUM pueden ser los días de la semana. Aquí te dejo un ejemplo de uso con la palabra reservada switch en java.

Ejemplos donde se pueden usar los Enum

  • Ya sabemos que una semana tiene siete días y como se llama cada día
  • Los meses del año
  • Los colores, etc.

Usos de los Enum

Se usan como constantes enumeradas
Son implementadas por colecciones como Map(EnumMap) y Set(EnumSet)

Implementación de los Enum en Java

  • If
  • Switch
  • Llamada a métodos
  • Asignación a variables
  • Iteradores
  • Se puede usar el metodo toString(), valueOf()

Ventajas de los Java Enum:

  •    Se pueden agregar métodos a la Enum, variables de instancia, constructores
  •    Son polimórficos
  •    Poseen su propio comportamiento
  •    Crear APIS orientadas a objetos
  •    Crear comportamientos determinados
  •    Se puede considerar como un tipo de Clase

Desventajas de las Enumeraciones en Java

  •   Están restringidos a un conjunto de valores en tiempo de compilación

Veamos su sintaxis y un ejemplo con los días de la semana.

Sintaxis en Java de una Enum

public enum nombreEnumeracion {
   VALOR1,
   VALOR2,
   VALOR3,
   VALOR...N
}

Ejemplo de una Enum

Las Enum se crean en un archivo aparte como si fueran una clase normal.

package cursojava;

public enum DiaSemana {
    LUNES,
    MARTES,
    MIERCOLES,
    JUEVES,
    VIERNES,
    SABADO,
    DOMINGO
}

Uso de la Enum en java

Para poder usar una enumeración dentro de un programa, hay que importarla para poder usar sus valores.

//Asignando el dia de la semana MARTES
dia = DiaSemana.MARTES.toString();

switch (diaSemana) {
   case LUNES:
        System.out.println("Hoy es lunes");
        break;
   case MARTES:
        System.out.println("Hoy es martes");
        break;
   default:
        System.out.println("Hoy NO es lunes ni martes");
        break;
 }

Espero que este ejemplo sencillo de Enum sea de utilidad.

Código de ejemplo sobre las Enum en Java

Creación de la Enum

En este sencillo ejemplo vemos como para crear la Enumeración en código Java, es necesario usar la palabra clave «Enum» seguida del nombre que le queramos dar a nuestra enumeración.

Ya dentro de las llaves que abren y cierran metemos todos los valores que se vallan a ocupar en la Enum.

package cursojava;

public enum DiaSemanaEnum {
    LUNES,
    MARTES,
    MIERCOLES,
    JUEVES,
    VIERNES,
    SABADO,
    DOMINGO
}

Creación de la clase que implementa la Enum con un Switch en Java

Para poder implementar una Enum en un programa cliente, tenemos que crear una instancia de la Enum que creamos previamente en el paso anterior.

Esto se hace declarando una variable del tipo de la enumeración que creamos y asignándole un valor de la enumeración previamente establecido.

Después de estos dos pasos, ya podemos usar la variable de la Enum en algún otro componente, en este caso se usara en un Switch para evaluar diferentes días de la semana.

package cursojava;

public class ObjetosMain {

    public static void main(String[] args) {

        Persona hugo = new Persona();
        Persona pedro = new Persona("Pedro", 18, 'M');

        DiaSemanaEnum diaSemana = DiaSemanaEnum.MARTES;

        switch (diaSemana) {
            case LUNES:
                System.out.println("Hoy es lunes");
                break;
            case MARTES:
                System.out.println("Hoy es martes");
                break;
            default:
                System.out.println("Hoy NO es lunes ni martes");
                break;

        }
    }
}

Imprimir el valor de una Enum de Java como String

/*
   Imprimir un valor de una Enum de Java en String con System.out.println
*/
//Enum java string 1
System.out.println("Hoy es >> " + diaSemEnum.toString());

//Enum java string 2
System.out.println("Hoy es >> " + DiaSemanaEnum.MARTES.toString());

Asignar a una variable String el valor de una Enum de Java

/*
   Asignar a una variable String el valor de una Enum
*/

//Assign Enum java to String variable 1
diaEnum = diaSemEnum.toString();

//Assign Enum java to String variable 2
diaEnum = DiaSemanaEnum.MARTES.toString();

Enum con constantes String

En este ejemplo de enumeración java vemos como en cada elemento de la Enum estamos metiendo un valor de tipo String en cada mes del año.  También creamos un atributo, un método constructor y un método que regresa el valor de cada elemento constante de la Enum.

package cursojava;

public enum MesesEnum {
    ENERO("MES NUMERO 1"),
    FEBRERO("MES NUMERO 2"),
    MARZO("MES NUMERO 3"),
    ABRIL("MES NUMERO 4"),
    MAYO("MES NUMERO 5"),
    JUNIO("MES NUMERO 6"),
    JULIO("MES NUMERO 7"),
    AGOSTO("MES NUMERO 8"),
    SEPTIEMBRE("MES NUMERO 9"),
    OCTUBRE("MES NUMERO 10"),
    NOVIEMBRE("MES NUMERO 11"),
    DICIEMBRE("MES NUMERO 12");
 
    private String mes;
 
    MesesEnum(String mes) {
        this.mes = mes;
    }
 
    public String getMes() {
        return this.mes;
    }
}

Iterando todas las constantes de la Enum

En este ejemplo implementamos un iterador de la Enum MesesEnum que definimos previamente, con un for vamos obteniendo cada elemento de la Enumeración a través del método values() que regresa un arreglo de elementos. Después simplemente imprimimos el valor de cada elemento de la Enum.

package cursojava;

public class MesesEnumMain {
    
    public static void main(String []args){
        
        for(MesesEnum mes : MesesEnum.values()){
            System.out.println("Mes = " + mes.getMes());
        }
    }
}

Obtener un valor de una Enum con valueOf

Con  la ayuda del método valueOf() de la Enumeración podemos acceder de forma directa al elemento de la Enum que coincida con el valor especificado en la Enum.

MesesEnum mes = MesesEnum.valueOf("MARZO");
System.out.println("Mes = " + mes.getMes());

Obtener el valor de un elemento de la Enum

Esta es otra forma de acceder al valor de un elemento de una Enumeración, consiste en poner el nombre de la Enum con un punto («.») y enseguida el nombre del elemento.

Si se cuenta con un método en la Enumeración para acceder al valor AQUÍ es donde se puede usar.

String mes2 = MesesEnum.DICIEMBRE.getMes();
System.out.println("Mes = " + mes2);

Preguntas frecuentes

¿Porque los valores de los Enum se ponen en mayúsculas?

Porque los valores son constantes y por convención las constantes se ponen en mayúsculas

¿Cuál es el objetivo de usar Enum en los programas java?

El tener valores ya predefinidos para ayudar a la estandarización del código y evitar errores en tiempo de compilación

Conclusión

En mi opinión personal el uso de los Enum de Java hacen que tu código fuente en java se vea mas elegante y mas legible, a demás  el uso de las Enumeraciones permite estandarizar el código a valores ya predeterminados en las Enum.

Esto sirve para evitar errores de compilación por introducir valores no validos a un cierto método o condición,

En lo general son muy útiles, te invito a usar los tipos enumerados y evita dolores de cabeza en el futuro.

Estaremos encantados de escuchar lo que piensas

Deje una respuesta

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
El inicio de sesión/registro está temporalmente inhabilitado