logo

Kako pretvoriti niz u enum u Javi?

Java enum su snažni tipovi podataka koji predstavljaju fiksni skup konstanti. Obično se koriste za ocrtavanje određenog skupa vrijednosti koje objekt može poprimiti. Ponekad ćete možda htjeti pretvoriti ilustraciju niza u enum vrijednost. U ovom kontekstu, istražit ćemo različite strategije za pretvaranje niza u enum u Javi, nudeći vam cijeli program za bolje razumijevanje.

Razumijevanje enuma u Javi:

Prije nego što zaronimo u proces pretvorbe, ukratko ponovimo Java enum. Enumeracije, ili skraćeno enum, uvedene su u Javi 5 kako bi pružile strukturiraniji način predstavljanja konstantnih vrijednosti. Enum deklaracija definira fiksni skup vrijednosti koje varijabla tog enum tipa može uzeti. Svaka vrijednost u enumu naziva se enum konstanta.

Evo primjera enum deklaracije:

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

U ovom slučaju, dan je naziv enuma i ima sedam konstanti koje predstavljaju dane u tjednu. Enum također može imati dodatna polja i metode, što ih čini fleksibilnijim i moćnijim od jednostavnih konstantnih vrijednosti.

Pretvaranje niza u enum:

Kada imate prikaz niza i također ga želite pretvoriti u enum, možete slijediti različite taktike na temelju vaših zahtjeva. Ovdje ćemo govoriti o 3 uobičajene metode za izvršavanje ove konverzije: korištenje metode valueOf(), korištenje prilagođenog mapiranja i korištenje metode Enum.ValueOf().

Metoda 1: Korištenje metode valueOf().

Maksimalni izravan način za pretvaranje niza u enum je uz pomoć upotrebe tehnike valueOf() koju nudi sam enum. Ovaj pristup uzima ime enum consistent kao niz i vraća odgovarajući enum regular ako se otkrije. Evo primjera:

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

Izlaz:

 FRIDAY 

U ovom primjeru pretvaramo niz 'FRIDAY' u enum Day pozivanjem metode valueOf(). Rezultat je konstanta enuma Day.FRIDAY, koja se zatim ispisuje na konzoli.

Važno je napomenuti da je metoda valueOf() osjetljiva na velika i mala slova i ako niz ne odgovara nijednoj enum konstanti, izbacit će se java.lang.IllegalArgumentException. Da biste to riješili, možete zamotati pretvorbu u blok try-catch kako biste elegantno obradili iznimku.

Metoda 2: Korištenje prilagođenog mapiranja

U nekim ćete slučajevima možda trebati izvršiti prilagođeno mapiranje između prikaza niza i enum konstante. Ovaj pristup je koristan kada se vrijednosti niza ne podudaraju točno s nazivima konstanti enuma. Evo primjera:

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

Izlaz:

 FRIDAY 

U ovom primjeru, enum Day ima dodatno polje koje se zove kratica, a koje predstavlja kraći prikaz niza dana. Definiramo prilagođenu metodu fromAbbreviation() koja izvodi konverziju na temelju kratice. Ako se kratica podudara s bilo kojom enum konstantom, vraća se odgovarajuća enum konstanta; inače se izbacuje izuzetak.

Metoda 3: Korištenje metode Enum.valueOf().

Treća metoda uključuje korištenje metode Enum.valueOf(), koja je metoda opće namjene za pretvaranje nizova u enum konstante. Evo primjera:

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

Izlaz:

 SUNDAY 

U ovom primjeru prosljeđujemo klasu enum (Day.class) i prikaz niza (dayString) metodi Enum.valueOf(). Vraća odgovarajuću enum konstantu ako je pronađena ili izbacuje IllegalArgumentException ako nije pronađeno podudaranje.

U ovom smo članku istražili različite metode za pretvaranje niza u enum u Javi. Raspravljali smo o korištenju metode valueOf(), stvaranju prilagođenog mapiranja i korištenju metode Enum.valueOf(). Ovisno o vašim zahtjevima, možete odabrati najprikladniji pristup. Ne zaboravite rukovati iznimkama kada koristite metodu valueOf() i razmislite o prilagođenom mapiranju kada se vrijednosti niza ne podudaraju izravno s nazivima konstanti enum.