logo

Hvordan konverteres en streng til Enum i Java?

Java enum er kraftfulde datatyper, der repræsenterer et fast sæt konstanter. De bruges almindeligvis til at skitsere et bestemt sæt værdier, som et objekt kan tage. Nogle gange vil du måske konvertere en strengillustration til en enum-værdi. I denne sammenhæng vil vi udforske forskellige strategier til at konvertere en streng til en enum i Java, hvilket giver dig et helt program for en bedre forståelse.

Forståelse af Enum i Java:

Inden vi dykker ned i konverteringsprocessen, lad os kort opsummere Java-enum. Optællinger, eller kort sagt enum, blev introduceret i Java 5 for at give en mere struktureret måde at repræsentere konstante værdier på. En enum-erklæring definerer et fast sæt værdier, som en variabel af den enum-type kan tage. Hver værdi i en enum kaldes en enum konstant.

Her er et eksempel på en enum-erklæring:

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

I dette tilfælde er Dag navnet på enummet, og det har syv konstanter, der repræsenterer ugedagene. Enum kan også have yderligere felter og metoder, hvilket gør dem mere fleksible og kraftfulde end simple konstante værdier.

Konvertering af en streng til Enum:

Når du har en strengrepræsentation, og du også vil konvertere den til en enum, kan du følge forskellige taktikker baseret på dine krav. Her vil vi tale om 3 almindelige metoder til at udføre denne konvertering: brugen af ​​valueOf() metoden, brugen af ​​en brugerdefineret mapping og brugen af ​​Enum.ValueOf() metoden.

Metode 1: Bruger metoden valueOf().

Den maksimale direkte måde at konvertere en streng til en enum på er ved hjælp af brugen af ​​valueOf() teknikken leveret ved hjælp af selve enum. Denne tilgang tager navnet på enummet konsistent som en streng og returnerer den tilsvarende enum regular, hvis den opdages. Her er et eksempel:

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

Produktion:

 FRIDAY 

I dette eksempel konverterer vi strengen 'FRIDAY' til Day enum ved at kalde valueOf() metoden. Resultatet er Day.FRIDAY enum-konstanten, som derefter udskrives til konsollen.

Det er vigtigt at bemærke, at valueOf()-metoden skelner mellem store og små bogstaver, og hvis strengen ikke matcher nogen enum-konstant, vil en java.lang.IllegalArgumentException blive kastet. For at håndtere dette kan du pakke konverteringen ind i en try-catch-blok for at håndtere undtagelsen elegant.

Metode 2: Brug af en brugerdefineret kortlægning

I nogle tilfælde skal du muligvis udføre en brugerdefineret tilknytning mellem strengrepræsentationen og enum-konstanten. Denne fremgangsmåde er nyttig, når strengværdierne ikke svarer nøjagtigt til enum-konstantens navne. Her er et eksempel:

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

Produktion:

 FRIDAY 

I dette eksempel har Dag-oversigten et ekstra felt kaldet forkortelse, som repræsenterer en kortere strengrepræsentation af dagen. Vi definerer en brugerdefineret metode fra Abbreviation(), der udfører konverteringen baseret på forkortelsen. Hvis forkortelsen matcher en enum-konstant, returneres den tilsvarende enum-konstant; ellers er der en undtagelse.

Metode 3: Brug af Enum.valueOf()-metoden

Den tredje metode involverer at bruge Enum.valueOf()-metoden, som er en generel metode til at konvertere strenge til enum-konstanter. Her er et eksempel:

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

Produktion:

 SUNDAY 

I dette eksempel sender vi enum-klassen (Day.class) og strengrepræsentationen (dayString) til Enum.valueOf()-metoden. Den returnerer den tilsvarende enum-konstant, hvis den findes, eller kaster en IllegalArgumentException, hvis der ikke findes nogen match.

I denne artikel undersøgte vi forskellige metoder til at konvertere en streng til en enum i Java. Vi diskuterede brug af valueOf()-metoden, oprettelse af en brugerdefineret mapping og brug af Enum.valueOf()-metoden. Afhængigt af dine krav kan du vælge den mest passende tilgang. Husk at håndtere undtagelser, når du bruger valueOf()-metoden, og overvej en tilpasset tilknytning, når strengværdierne ikke matcher enum-konstantens navne direkte.