Јава енум су моћни типови података који представљају фиксни скуп константи. Обично се користе за скицирање одређеног скупа вредности које објекат може да преузме. Понекад ћете можда желети да конвертујете илустрацију низа у вредност енума. У овом контексту, истражићемо различите стратегије за претварање стринга у енум у Јави, нудећи вам цео програм за боље разумевање.
Разумевање енума у Јави:
Пре него што уђемо у процес конверзије, хајде да укратко поновимо Јава енум. Енумерације, или скраћено енум, уведене су у Јаву 5 да би се обезбедио структуриранији начин представљања константних вредности. Декларација енума дефинише фиксни скуп вредности које променљива тог типа енума може да преузме. Свака вредност у енум-у се назива енум константа.
Ево примера енум декларације:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
У овом случају, Даи је име енума и има седам константи које представљају дане у недељи. Енум такође може имати додатна поља и методе, што их чини флексибилнијим и моћнијим од једноставних константних вредности.
Претварање стринга у енум:
Када имате репрезентацију стрингова и такође желите да је конвертујете у енум, можете да следите различите тактике на основу ваших захтева. Овде ћемо говорити о 3 уобичајене методе за извршавање ове конверзије: коришћење методе валуеОф(), коришћење прилагођеног мапирања и коришћење методе Енум.ВалуеОф().
Метод 1: Коришћење методе валуеОф().
Максимални директан начин претварања стринга у енум је уз помоћ употребе технике валуеОф() која је обезбеђена помоћу самог енума. Овај приступ узима назив енума конзистентан као стринг и враћа одговарајући регуларни енум ако се открије. Ево примера:
СтрингТоЕнумЕкампле.јава
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 } }
Излаз:
FRIDAY
У овом примеру, конвертујемо стринг 'ФРИДАИ' у дан енум позивањем методе валуеОф(). Резултат је Даи.ФРИДАИ енум константа, која се затим штампа на конзоли.
Важно је напоменути да је метода валуеОф() осетљива на велика и мала слова и ако се стринг не подудара ни са једном константом енума, биће избачен изузетак јава.ланг.ИллегалАргументЕкцептион. Да бисте ово решили, можете умотати конверзију у блок три-цатцх да бисте елегантно обрадили изузетак.
Метод 2: Коришћење прилагођеног мапирања
У неким случајевима, можда ћете морати да извршите прилагођено мапирање између приказа стрингова и енум константе. Овај приступ је користан када се вредности стрингова не поклапају тачно са називима константи енума. Ево примера:
СтрингТоЕнумЕкампле.јава
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 } }
Излаз:
FRIDAY
У овом примеру, Даи енум има додатно поље које се зове скраћеница, које представља краћу репрезентацију дана. Дефинишемо прилагођени метод из Аббревиатион() који врши конверзију на основу скраћенице. Ако се скраћеница поклапа са било којом константом набрајања, враћа се одговарајућа енум константа; у супротном, избацује се изузетак.
Метод 3: Коришћење методе Енум.валуеОф().
Трећи метод укључује коришћење Енум.валуеОф() методе, која је метода опште намене за претварање стрингова у енум константе. Ево примера:
СтрингТоЕнумЕкампле.јава
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 } }
Излаз:
SUNDAY
У овом примеру ми прослеђујемо класу енум (Даи.цласс) и стринг репрезентацију (даиСтринг) методи Енум.валуеОф(). Враћа одговарајућу константу енума ако је пронађена или избацује изузетак ИллегалАргументЕкцептион ако није пронађено подударање.
У овом чланку смо истражили различите методе за претварање стринга у енум у Јави. Разговарали смо о коришћењу методе валуеОф(), креирању прилагођеног мапирања и коришћењу методе Енум.валуеОф(). У зависности од ваших захтева, можете изабрати најприкладнији приступ. Не заборавите да рукујете изузецима када користите метод валуеОф() и размотрите прилагођено мапирање када се вредности стрингова не поклапају директно са називима константи енум.