Java enum so zmogljivi tipi podatkov, ki predstavljajo fiksen niz konstant. Običajno se uporabljajo za oris določenega niza vrednosti, ki jih lahko sprejme predmet. Včasih boste morda želeli pretvoriti ilustracijo niza v vrednost enum. V tem kontekstu bomo raziskali različne strategije za pretvorbo niza v enum v Javi in vam ponudili celoten program za boljše razumevanje.
Razumevanje enuma v Javi:
Preden se poglobimo v proces pretvorbe, na kratko povzamemo Java enum. Enumeracije ali na kratko enum so bile uvedene v Javi 5, da bi zagotovile bolj strukturiran način predstavljanja stalnih vrednosti. Deklaracija enum definira fiksen niz vrednosti, ki jih lahko sprejme spremenljivka tega tipa enum. Vsaka vrednost v enumu se imenuje konstanta enuma.
Tukaj je primer deklaracije enum:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
V tem primeru je dan ime enuma in ima sedem konstant, ki predstavljajo dneve v tednu. Enum ima lahko tudi dodatna polja in metode, zaradi česar so bolj prilagodljivi in zmogljivi kot preproste konstantne vrednosti.
Pretvarjanje niza v enum:
Ko imate predstavitev niza in jo želite pretvoriti v enum, lahko sledite različnim taktikam glede na vaše zahteve. Tukaj bomo govorili o 3 običajnih metodah za izvedbo te pretvorbe: uporabi metode valueOf(), uporabi preslikave po meri in uporabi metode Enum.ValueOf().
1. način: Uporaba metode valueOf().
Največji neposreden način za pretvorbo niza v enum je s pomočjo uporabe tehnike valueOf(), ki jo zagotavlja sam enum. Ta pristop vzame ime konsistentnega enuma kot niz in vrne ustrezen enum regular, če je odkrit. Tukaj je primer:
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 } }
Izhod:
FRIDAY
V tem primeru pretvorimo niz 'PETEK' v enum Day s klicem metode valueOf(). Rezultat je konstanta enuma Day.FRIDAY, ki se nato natisne na konzolo.
Pomembno je upoštevati, da metoda valueOf() razlikuje med velikimi in malimi črkami in če se niz ne ujema z nobeno konstanto enum, bo vržena izjema java.lang.IllegalArgumentException. Če želite to rešiti, lahko pretvorbo zavijete v blok poskusi-ulovi, da elegantno obravnavate izjemo.
2. način: Uporaba preslikave po meri
V nekaterih primerih boste morda morali izvesti preslikavo po meri med predstavitvijo niza in konstanto enum. Ta pristop je uporaben, kadar se vrednosti nizov ne ujemajo natančno z imeni konstant enum. Tukaj je primer:
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 } }
Izhod:
FRIDAY
V tem primeru ima enum Day dodatno polje, imenovano okrajšava, ki predstavlja krajšo nizovno predstavitev dneva. Definiramo metodo po meri fromAbbreviation(), ki izvede pretvorbo na podlagi okrajšave. Če se okrajšava ujema s katero koli konstanto enum, se vrne ustrezna konstanta enum; sicer se vrže izjema.
3. način: Uporaba metode Enum.valueOf().
Tretja metoda vključuje uporabo metode Enum.valueOf(), ki je splošna metoda za pretvorbo nizov v konstante enum. Tukaj je primer:
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 } }
Izhod:
SUNDAY
V tem primeru posredujemo razred enum (Day.class) in predstavitev niza (dayString) metodi Enum.valueOf(). Vrne ustrezno konstanto enum, če je najdena, ali vrže izjemo IllegalArgumentException, če ni ujemanja.
V tem članku smo raziskali različne metode za pretvorbo niza v enum v Javi. Razpravljali smo o uporabi metode valueOf(), ustvarjanju preslikave po meri in uporabi metode Enum.valueOf(). Glede na vaše zahteve lahko izberete najprimernejši pristop. Pri uporabi metode valueOf() ne pozabite obravnavati izjem in razmislite o preslikavi po meri, ko se vrednosti nizov ne ujemajo neposredno z imeni konstant enum.