¿Qué vamos a ver?

Bueno, después de la clase de introducción a los enums, vamos a empezar a explicar cómo mostrar sus valores, tanto solamente único valor, como también múltiples valores. Y también repasaremos como recorrerlos los enums mediante a bucles de diferentes maneras.

Partimos del siguiente código para trabajar. Una clase Estaciones y un método Main desde el que sacaremos los resultados:

Mostrando un valor en específico de un enum

Para mostrar un único valor, tenemos varias opciones. En la clase anterior ya vimos la siguiente:

Otra manera de mostrar los valores sería mediante a value, en este caso, aparte de mostrar un valor, mostramos el nombre de la clase, la longitud, value nos devuelve el array que contiene los elementos. Eso sí, un array sin parsear y por último el valor que deseamos pasándole la posición del array.

ValueOf

ValueOf, nos permite buscar dentro de un enum un elemento. Vamos a ver un ejemplo.

Pese a ello, si ejecutamos lo siguiente, en vez de encontrarnos con el resultado esperado, nos encontramos con un error.

Este error, se produce debido a que Java es key sensitive (distingue mayúsculas y minúsculas) y por tanto, no será lo mismo INVIERNO que invierno.

Para evitar que se produzca un error si el elemento buscado no existe podemos englobar el código dentro de un try catch. Además lo ideal, sería que guardáramos el nombre del elemento a buscar en una variable y utilizáramos el método toUpperCase para pasar el texto a mayúsculas. De esta manera, nos curarnos en salud evitando casos como el que se ha producido anteriormente, donde un elemento existe pero está en mayúsculas.

Name y Ordinal

Name, nos devuelve el nombre del valor en formato String.
Ordinal, nos devuelve la posición que ocupa el elemento dentro de la clase Enum. El primer valor siempre será el 0. El segundo el 1 y así con todos.
Una fórmula para calcularlo es: n-1 en la la posición del elemento en la clase Enum.

CompareTo

Mediante a compareTo podemos comparar dos enums, eso sí, debemos guardar uno de ellos en una variable como en el siguiente ejemplo:

Mostrando múltiples valores de un enum

Realmente, System.out.println(Estaciones.values()); lo que nos intenta mostrar es el contenido del enum, pero no lo vemos bien debido a que nos está mostrando es un Array que tiene algo similar a una codificación y que debemos pasar a string mediante un parseo (en este caso significa pasar el contenido del Array a un formato String para poderlo imprimir).

For manera 1 (tradicional)

Vamos a ver cómo realizar un bucle con un for tradicional:

For manera 2 (for each)

Si escribimos foreach en el main y pulsamos control + espacio, se nos mostrará lo siguiente si seleccionamos el foreach, directamente, se nos creará una estructura similar a la del ejemplo. Y solamente deberemos cambiarle los nombres de las variables para recorrer todos los elementos del bucle.

El resultado de ambos será el mismo:

Bueno justamente aquí, este artículo llega a su fin. En la próxima clase, acabaremos cerramos la explicación de las clases enums viendo la potencia que pueden llegar a tener si los combinamos con Getters&Setters.