1. Introducción
En este breve artículo, veremos cómo convertir una cadena en una enumeración en Java rápidamente.
2. Configuración
Estamos tratando con el núcleo de Java, por lo que no necesitamos agregar ningún artefacto adicional. Trabajaremos con PizzaDeliveryStatusEnum del artículo de la guía de enumeraciones.
3. La conversión
Las enumeraciones son similares a las clases estándar de Java y se puede acceder a sus valores mediante la notación de puntos. Entonces, para acceder al valor READY de PizzaDeliveryStatusEnum , haríamos:
PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;
Esto está bien, pero ¿qué pasaría si tuviéramos el valor del estado almacenado como una Cadena y quisiéramos convertirlo en PizzaStatusEnum ? La forma ingenua de hacer esto sería escribir una declaración de cambio gigante que devuelva el valor correcto de la enumeración para cada uno de sus valores posibles. Pero escribir y mantener dicho código es una pesadilla y debe evitarse a toda costa.
Por otro lado, el tipo enum proporciona un método valueOf () que toma un String como argumento y devuelve el objeto enum correspondiente :
PizzaStatusEnum readyStatus = PizzaStatusEnum.valueOf("READY");
Podemos comprobar que este enfoque realmente funciona mediante una prueba unitaria:
@Test public void whenConvertedIntoEnum_thenGetsConvertedCorrectly() { String pizzaEnumValue = "READY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); assertTrue(pizzaStatusEnum == PizzaStatusEnum.READY); }
Es importante recordar que el método valueOf () hace una coincidencia sensible a mayúsculas y minúsculas del argumento que se le proporciona, por lo que pasar un valor que no coincide con el caso de ninguno de los valores de la enumeración original conduciría a una IllegalArgumentException :
@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); }
Pasar un valor que no es parte de los valores de la enumeración original también conduce a una IllegalArgumentException :
@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); }
4. Conclusión
En este artículo rápido, vimos cómo convertir una cadena en una enumeración .
Es muy recomendable que usemos el método valueOf () incorporado del tipo enum , en lugar de hacer la conversión nosotros mismos.
Como siempre, el código de este artículo se puede encontrar en GitHub.