logo

¿Cómo convertir una cadena a Enum en Java?

Las enumeraciones de Java son tipos de datos potentes que representan un conjunto fijo de constantes. Se utilizan comúnmente para delinear un conjunto específico de valores que puede tomar un objeto. A veces, es posible que desees convertir una ilustración de cadena en un valor de enumeración. En este contexto, exploraremos diversas estrategias para convertir una cadena en una enumeración en Java, ofreciéndote un programa completo para una mejor comprensión.

Comprensión de Enum en Java:

Antes de sumergirnos en el proceso de conversión, recapitulemos brevemente la enumeración de Java. Las enumeraciones, o enum para abreviar, se introdujeron en Java 5 para proporcionar una forma más estructurada de representar valores constantes. Una declaración de enumeración define un conjunto fijo de valores que puede tomar una variable de ese tipo de enumeración. Cada valor en una enumeración se llama constante de enumeración.

A continuación se muestra un ejemplo de una declaración de enumeración:

 public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 

En este caso, Día es el nombre de la enumeración y tiene siete constantes que representan los días de la semana. Enum también puede tener campos y métodos adicionales, lo que los hace más flexibles y potentes que los simples valores constantes.

Conversión de una cadena a enumeración:

Cuando tiene una representación de cadena y también desea convertirla en una enumeración, puede seguir diferentes tácticas según sus requisitos. Aquí, hablaremos de 3 métodos comunes para realizar esta conversión: el uso del método valueOf(), el uso de un mapeo personalizado y el uso del método Enum.ValueOf().

Método 1: uso del método valueOf()

La forma más directa de convertir una cadena en una enumeración es mediante el uso de la técnica valueOf() proporcionada por la propia enumeración. Este enfoque toma el nombre de la enumeración consistente como una cadena y devuelve la enumeración regular correspondiente si se descubre. He aquí un ejemplo:

StringToEnumExample.java

 public class StringToEnumExample { public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { String dayString = 'FRIDAY'; Day day = Day.valueOf(dayString); System.out.println(day); // Output: FRIDAY } } 

Producción:

 FRIDAY 

En este ejemplo, convertimos la cadena 'VIERNES' a la enumeración Día llamando al método valueOf(). El resultado es la constante de enumeración Day.FRIDAY, que luego se imprime en la consola.

Es importante tener en cuenta que el método valueOf() distingue entre mayúsculas y minúsculas y, si la cadena no coincide con ninguna constante de enumeración, se generará una java.lang.IllegalArgumentException. Para manejar esto, puede envolver la conversión en un bloque try-catch para manejar la excepción correctamente.

Método 2: utilizar una asignación personalizada

En algunos casos, es posible que necesite realizar una asignación personalizada entre la representación de cadena y la constante de enumeración. Este enfoque es útil cuando los valores de cadena no coinciden exactamente con los nombres de las constantes de enumeración. He aquí un ejemplo:

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with associated abbreviations public enum Day { MONDAY('Mon'), TUESDAY('Tue'), WEDNESDAY('Wed'), THURSDAY('Thu'), FRIDAY('Fri'), SATURDAY('Sat'), SUNDAY('Sun'); // Private field to store the abbreviation for each day private final String abbreviation; // Constructor to initialize the abbreviation for each enum constant Day(String abbreviation) { this.abbreviation = abbreviation; } // Getter method to retrieve the abbreviation for a specific day public String getAbbreviation() { return abbreviation; } // Custom method to convert an abbreviation string to the corresponding enum constant public static Day fromAbbreviation(String abbreviation) { for (Day day : Day.values()) { if (day.getAbbreviation().equalsIgnoreCase(abbreviation)) { return day; } } // If no match is found, throw an IllegalArgumentException throw new IllegalArgumentException('Invalid abbreviation: ' + abbreviation); } } public static void main(String[] args) { String dayString = 'Fri'; // Convert the abbreviation string to the corresponding Day enum constant Day day = Day.fromAbbreviation(dayString); System.out.println(day); // Output: FRIDAY } } 

Producción:

 FRIDAY 

En este ejemplo, la enumeración Día tiene un campo adicional llamado abreviatura, que representa una representación de cadena más corta del día. Definimos un método personalizado fromAbbreviation() que realiza la conversión en función de la abreviatura. Si la abreviatura coincide con alguna constante de enumeración, se devuelve la constante de enumeración correspondiente; de lo contrario, se lanza una excepción.

Método 3: usar el método Enum.valueOf()

El tercer método implica el uso del método Enum.valueOf(), que es un método de propósito general para convertir cadenas en constantes de enumeración. He aquí un ejemplo:

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with seven constants representing the days of the week public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { // Define the string representation of the day String dayString = 'SUNDAY'; // Convert the string to the corresponding Day enum constant using Enum.valueOf() Day day = Enum.valueOf(Day.class, dayString); // Print the value of the day System.out.println(day); // Output: SUNDAY } } 

Producción:

 SUNDAY 

En este ejemplo, pasamos la clase de enumeración (Day.class) y la representación de cadena (dayString) al método Enum.valueOf(). Devuelve la constante de enumeración correspondiente si se encuentra, o arroja una excepción IllegalArgumentException si no se encuentra ninguna coincidencia.

En este artículo, exploramos diferentes métodos para convertir una cadena en una enumeración en Java. Discutimos el uso del método valueOf(), la creación de una asignación personalizada y la utilización del método Enum.valueOf(). Dependiendo de sus requisitos, puede elegir el enfoque más adecuado. Recuerde manejar las excepciones cuando utilice el método valueOf() y considere una asignación personalizada cuando los valores de la cadena no coincidan directamente con los nombres de las constantes de enumeración.