Un enum es un tipo especial de datos que es básicamente una colección (conjunto) de constantes. En este tutorial aprenderemos a utilizar los enums en Java y cuáles son los posibles escenarios en los que podemos utilizarlos.
Así es como definimos el Enum
lista pública Direcciones{ Este, Oeste, Norte, Sur}
Aquí tenemos una variable Direcciones de tipo enum, que es una colección de cuatro constantes ESTE, OESTE, NORTE y SUR.
¿Cómo asignar valor a un tipo de enum?
Directions dir = Directions.NORTH;
La variable dir es del tipo Directions (que es un tipo enum). Esta variable puede tomar cualquier valor, de los cuatro posibles (ESTE, OESTE, NORTE, SUR). En este caso se establece como NORTE.
Uso de los tipos Enum en las sentencias if-else
Así es como podemos usar una variable enum en una lógica de «si no».
/* Se puede asignar cualquier valor aquí de * ESTE, OESTE, NORTE, SUR. Sólo por el * por ejemplo, estoy asignando a NORTE */Direcciones dir = Direcciones.NORTE; if(dir == Direcciones.ESTE) { // Haz algo. Escriba su lógica} más si(dir == Direcciones.OESTE) { // Haga algo más } más si(dir == Direcciones.NORTE) { // Haga algo } más { /* Haga algo. Escriba la lógica para * la constante restante SUR */ }
Ejemplo de Enum
Este es sólo un ejemplo para demostrar el uso de los enums. Si entiendes la parte central y lo básico, serías capaz de escribir tu propia lógica basada en el requerimiento.
public enumtions{ EAST, WEST, NORTH, SOUTH}public class EnumDemo{ public static void main(String args[]){ Directions dir = Directions.NORTH; if(dir == Directions.EAST) { System.out.println("Dirección: Este"); } else if(dir == Direcciones.OESTE) { System.out.println("Dirección: Oeste"); } else if(dir == Direcciones.NORTE) { System.out.println("Dirección: Norte"); } else { System.out.println("Dirección: Sur"); } }}
Salida:
Dirección: Norte
Uso de Enum en declaraciones de casos de cambio
A continuación se presenta el ejemplo para demostrar el uso de los enums en las declaraciones de cambio de caso.
public enum Directions{ EAST, WEST, NORTH, SOUTH}public class EnumDemo{ Directions dir; public EnumDemo(Directions dir) { this.dir = dir; } public void getMyDirection() { switch (dir) { case EAST: System.out.println("En dirección este"); romper; caso OESTE: System.out.println("En dirección oeste"); romper; caso NORTE: System.out.println("En dirección norte"); romper; por defecto: System.out.println("En dirección sur"); romper; } } vacío estático público main(String[] args) { EnumDemo obj1 = nuevo EnumDemo(Directions.EAST); obj1.getMyDirection(); EnumDemo obj2 = nuevo EnumDemo(Directions.SOUTH); obj2.getMyDirection(); }}
Salida:
En dirección EsteEn dirección Sur
Cómo iterar a través de una variable de Enum
class EnumDemo{ public static void main(String[] args) { for (Directions dir : Directions.values()) { System.out.println(dir); } }}
Este código mostraría las cuatro constantes.
Campos y métodos de enumeración
Tomemos un ejemplo primero y luego lo discutiremos en detalle:
public enum Directions{ EAST ("E"), WEST ("W"), NORTH ("N"), SOUTH ("S") ; /* Nota importante: Debe tener punto y coma al final cuando hay un campo enum o un método */ private final String shortCode; Directions(String code) { this.shortCode = code; } public String getDirectionCode() { return this.shortCode; }} clase pública EnumDemo{ public static void main(String[] args) { Directions dir = Directions.SOUTH; System.out.println(dir.getDirectionCode()); Directions dir2 = Directions.EAST; System.out.println(dir2.getDirectionCode()); }}
Salida:
SE
Como puedes ver en este ejemplo tenemos un campo shortCode para cada una de las constantes, junto con un método getDirectionCode() que es básicamente un método getter para este campo. Cuando definimos una constante como esta EAST («E»), llama al constructor enum (Referirse al constructor Directions en el ejemplo anterior) con el argumento pasado. De esta manera el valor pasado se establece como un valor para el campo de la constante del enum correspondiente [EAST(«E») => Llamaría al constructor Directions(«E») => this.shortCode = código => este.shortCode = «E» => el campo shortCode de la constante EAST se establece en «E»].
Puntos importantes a tener en cuenta:
1) Al definir Enums, las constantes deben ser declaradas primero, antes de cualquier campo o método.
2) Cuando hay campos y métodos declarados dentro de Enum, la lista de constantes enum debe terminar con un punto y coma(;).