logo

Hvordan konvertere en streng til Enum i Java?

Java enum er kraftige datatyper som representerer et fast sett med konstanter. De brukes ofte til å skissere et spesifikt sett med verdier som et objekt kan ta. Noen ganger vil du kanskje konvertere en strengillustrasjon til en enum-verdi. I denne sammenhengen vil vi utforske ulike strategier for å konvertere en streng til en enum i Java, og tilby deg et helt program for en bedre forståelse.

Forstå Enum i Java:

Før vi går inn i konverteringsprosessen, la oss kort oppsummere Java-oppsummeringen. Oppregninger, eller enum for kort, ble introdusert i Java 5 for å gi en mer strukturert måte å representere konstante verdier på. En enum-erklæring definerer et fast sett med verdier som en variabel av den enum-typen kan ta. Hver verdi i en enum kalles en enum-konstant.

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

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

I dette tilfellet er Day navnet på enumet, og det har syv konstanter som representerer ukedagene. Enum kan også ha flere felt og metoder, noe som gjør dem mer fleksible og kraftige enn enkle konstantverdier.

Konvertere en streng til Enum:

Når du har en strengrepresentasjon og også ønsker å konvertere den til en enum, kan du følge forskjellige taktikker basert på dine behov. Her vil vi snakke om 3 vanlige metoder for å utføre denne konverteringen: bruken av valueOf()-metoden, bruken av en tilpasset tilordning og bruken av Enum.ValueOf()-metoden.

Metode 1: Bruk valueOf()-metoden

Den maksimale direkte måten å konvertere en streng til en enum på er ved hjelp av bruken av valueOf()-teknikken levert ved hjelp av selve enumen. Denne tilnærmingen tar navnet på enum konsistent som en streng og returnerer den tilsvarende enum regular hvis oppdaget. 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 } } 

Produksjon:

 FRIDAY 

I dette eksemplet konverterer vi strengen 'FRIDAY' til Day enum ved å kalle valueOf()-metoden. Resultatet er Day.FRIDAY enum-konstanten, som deretter skrives ut til konsollen.

Det er viktig å merke seg at valueOf()-metoden skiller mellom store og små bokstaver, og hvis strengen ikke samsvarer med noen enum-konstant, vil en java.lang.IllegalArgumentException bli kastet. For å håndtere dette kan du pakke konverteringen inn i en try-catch-blokk for å håndtere unntaket elegant.

Metode 2: Bruke en tilpasset kartlegging

I noen tilfeller kan det hende du må utføre en tilpasset tilordning mellom strengrepresentasjonen og enum-konstanten. Denne tilnærmingen er nyttig når strengverdiene ikke samsvarer nøyaktig med enum-konstantene. 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 } } 

Produksjon:

 FRIDAY 

I dette eksemplet har dagopptellingen et tilleggsfelt kalt forkortelse, som representerer en kortere strengrepresentasjon av dagen. Vi definerer en egendefinert metode fraAbbreviation() som utfører konverteringen basert på forkortelsen. Hvis forkortelsen samsvarer med en enum-konstant, returneres den tilsvarende enum-konstanten; ellers blir det gjort et unntak.

Metode 3: Bruk av Enum.valueOf()-metoden

Den tredje metoden innebærer å bruke Enum.valueOf()-metoden, som er en generell metode for å konvertere strenger 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 } } 

Produksjon:

 SUNDAY 

I dette eksemplet sender vi enum-klassen (Day.class) og strengrepresentasjonen (dayString) til Enum.valueOf()-metoden. Den returnerer den korresponderende enum-konstanten hvis den blir funnet, eller kaster et IllegalArgumentException hvis ingen samsvar blir funnet.

I denne artikkelen utforsket vi forskjellige metoder for å konvertere en streng til en enum i Java. Vi diskuterte bruk av valueOf()-metoden, opprettelse av en tilpasset tilordning og bruk av Enum.valueOf()-metoden. Avhengig av dine behov, kan du velge den mest passende tilnærmingen. Husk å håndtere unntak når du bruker valueOf()-metoden, og vurder en tilpasset tilordning når strengverdiene ikke samsvarer direkte med enum-konstantene.