Java: Enum

Un enum (enumeración o tipo enumerado) es un tipo de dato definido por el usuario que solo puede tomar como valores los definidos en una lista.


.: [Estructura] :.
_______________________________________

La estructura de un enum sería así:

[modificador] enum nombreEnum {VALOR_1, VALOR_2, VALOR_3, VALOR_4,...}

modificador: Es opcional, puede ser public, private, protected (static).
enum: Es la palabra reservada para definir enumeraciones en Java.
nombreEnum: Es la palabra reservada para definir enumeraciones en Java.
VALOR_1,...: Es el nombre del nuevo tipo creado.

.: [Ejemplo] :.
_______________________________________

public enum Dia {LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SABADO, DOMINGO}


modificador: public.
nombreEnum: Dia.
Valores: LUNES, MARTES, MIÉRCOLES, JUEVES, VIERNES, SABADO, DOMINGO.

· Normalmente se suelen escribir los valores en mayúsculas ya que son constantes.
· Después de crear el tipo enum ya podemos declarar las variables.
· Ahora mismo declararemos una variable de Dia (d). La variable d solo podrá tomar uno de los valores definidos en la lista de valores. 
· Para darle un valor a las variables: nombreDelEnum.VALOR;

[EJ]:

d = Dia.MARTES;

.: [Uso] :.
_______________________________________

· Ejemplo de uso:

public class Enum1 {
   enum Dia {LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO}

   public static void main(String[] args) {

      Dia d; // declaramos una variable del tipo Dia
      d = Dia.DOMINGO; //asignamos un valor

      if (d == Dia.DOMINGO || d == Dia.SABADO) { //comparamos valores
         System.out.println("Estamos en fin de semana");

      }else{
         System.out.println("Aún no ha llegado el fin de semana");

      switch (d) { //ejemplo de switch

         case LUNES:
         case MARTES:
         case MIERCOLES:
         case JUEVES:
         case VIERNES:

            System.out.println("Aún no ha llegado el fin de semana");
            break;
         default:
            System.out.println("Estamos en fin de semana");

      }
   }
}

.: [Métodos] :.
_______________________________________

Algunos de estos métodos que se pueden heredar de Enum:

· name(): Devuelve un String con el nombre de la constante que contiene tal y como aparece en la declaración.

[ES]: public final String name()

· ordinal(): Devuelve un entero con la posición de la constante según está declarada. A la primera constante le corresponde la posición cero.

[ES]: 
public final int ordinal()

· toString(): Devuelve un String con el nombre de la constante que contiene tal y como aparece en la declaración. Sobrescribe el método toString de la clase Object.

[ES]: 
public String toString()

· equals(): Devuelve true si el valor de la variable enum es igual al objeto que recibe. Sobrescribe el método equals de la clase Object.

[ES]: 
public final boolean equals(Object other)

· compareTo(): Compara el enum con el que recibe según el orden en el que están declaradas las constantes. Devuelve un número negativo, cero o un número positivo según el objeto sea menor, igual o mayor que el que recibe como parámetro. Solo se pueden comparar enumeraciones del mismo tipo.

[ES]: 
public final int compareTo(Enum other)

· valueOf(): Devuelve la constante que coincide exactamente con el String que recibe como parámetro.

[ES]: public static enumConstant valueOf(String s)


· Ejemplo de uso de métodos heredados de la clase Enum:

public class Enum2 {

    public enum Opcion {UNO, DOS, TRES, CUATRO}  
   
    public static void main(String[] args) {
        Opcion op = Opcion.DOS;
        Opcion op2 = Opcion.CUATRO;
    
        if(op.name().equals("DOS"))
           System.out.println("Cadena DOS");
        System.out.println(op.ordinal());

        if(op2.compareTo(op)>0)
            System.out.println(op2 + " > " + op);
        String cadena = "UNO";

        if(Opcion.valueOf(cadena) == Opcion.UNO)
            System.out.println("Cadena UNO");

        for(Opcion x : Opcion.values())
            System.out.println(x);     
    }
}


_______________________________________

[EJ]: Ejemplo.
[ES]: Estructura.
Fuente.

Comentarios