logo

Com convertir una cadena a Enum a Java?

La enumeració de Java són tipus de dades potents que representen un conjunt fix de constants. S'utilitzen habitualment per descriure un conjunt específic de valors que pot prendre un objecte. De vegades, és possible que vulgueu convertir una il·lustració de cadena en un valor enumerador. En aquest context, explorarem diverses estratègies per convertir una cadena en una enumeració en Java, oferint-vos tot un programa per a una millor comprensió.

Comprendre Enum a Java:

Abans d'endinsar-nos en el procés de conversió, resumim breument la enumeració de Java. Les enumeracions, o enum per abreujar, es van introduir a Java 5 per proporcionar una manera més estructurada de representar valors constants. Una declaració d'enumeració defineix un conjunt fix de valors que pot prendre una variable d'aquest tipus d'enumeració. Cada valor d'una enumeració s'anomena constant enumeració.

Aquí teniu un exemple de declaració d'enum:

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

En aquest cas, Dia és el nom de l'enum i té set constants que representen els dies de la setmana. Enum també pot tenir camps i mètodes addicionals, fent-los més flexibles i potents que els valors constants simples.

Convertint una cadena a enumeració:

Quan tingueu una representació de cadena i també voleu convertir-la en una enumeració, podeu seguir diferents tàctiques segons els vostres requisits. Aquí parlarem de 3 mètodes habituals per fer aquesta conversió: l'ús del mètode valueOf(), l'ús d'un mapeig personalitzat i l'ús del mètode Enum.ValueOf().

Mètode 1: utilitzant el mètode valueOf().

La manera màxima directa de convertir una cadena en una enumeració és amb l'ajut de l'ús de la tècnica valueOf() proporcionada per la mateixa enumeració. Aquest enfocament pren el nom de l'enum consistent com una cadena i retorna l'enum regular corresponent si es descobreix. Aquí teniu un exemple:

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 } } 

Sortida:

 FRIDAY 

En aquest exemple, convertim la cadena 'FRIDAY' a la enumeració del dia cridant al mètode valueOf(). El resultat és la constant enumeració Day.FRIDAY, que després s'imprimeix a la consola.

És important tenir en compte que el mètode valueOf() distingeix entre majúscules i minúscules i, si la cadena no coincideix amb cap constant d'enumeració, es llançarà una excepció java.lang.IllegalArgumentException. Per gestionar-ho, podeu embolicar la conversió en un bloc try-catch per gestionar l'excepció amb gràcia.

Mètode 2: Ús d'un mapeig personalitzat

En alguns casos, és possible que hàgiu de realitzar una assignació personalitzada entre la representació de la cadena i la constant enumeració. Aquest enfocament és útil quan els valors de la cadena no coincideixen exactament amb els noms de les constants enumeracions. Aquí teniu un exemple:

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 } } 

Sortida:

 FRIDAY 

En aquest exemple, la enumeració del dia té un camp addicional anomenat abreviatura, que representa una representació de cadena més curta del dia. Definim un mètode personalitzat des de l'abreviatura() que realitza la conversió en funció de l'abreviatura. Si l'abreviatura coincideix amb qualsevol constant enumeració, es retorna la constant enumeració corresponent; en cas contrari, es llança una excepció.

Mètode 3: utilitzant el mètode Enum.valueOf().

El tercer mètode consisteix a utilitzar el mètode Enum.valueOf(), que és un mètode de propòsit general per convertir cadenes en constants enumeracions. Aquí teniu un exemple:

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 } } 

Sortida:

 SUNDAY 

En aquest exemple, passem la classe enum (Day.class) i la representació de cadena (dayString) al mètode Enum.valueOf(). Retorna la constant d'enumeració corresponent si es troba, o llança una IllegalArgumentException si no es troba cap coincidència.

En aquest article, hem explorat diferents mètodes per convertir una cadena en una enumeració a Java. Hem parlat de l'ús del mètode valueOf(), la creació d'un mapeig personalitzat i l'ús del mètode Enum.valueOf(). En funció de les vostres necessitats, podeu triar l'enfocament més adequat. Recordeu gestionar les excepcions quan utilitzeu el mètode valueOf() i considereu una assignació personalitzada quan els valors de cadena no coincideixen directament amb els noms de les constants d'enumeració.