logo

Как да конвертирате низ в Enum в Java?

Java enum са мощни типове данни, които представляват фиксиран набор от константи. Те обикновено се използват за очертаване на конкретен набор от стойности, които даден обект може да приеме. Понякога може да искате да конвертирате илюстрация на низ в стойност enum. В този контекст ще проучим различни стратегии за преобразуване на низ в enum в Java, предлагайки ви цяла програма за по-добро разбиране.

Разбиране на Enum в Java:

Преди да се потопим в процеса на преобразуване, нека обобщим накратко Java enum. Изброяванията или накратко enum бяха въведени в Java 5, за да осигурят по-структуриран начин за представяне на постоянни стойности. Декларацията на enum дефинира фиксиран набор от стойности, които променлива от този тип enum може да приеме. Всяка стойност в enum се нарича enum константа.

Ето пример за декларация на enum:

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

В този случай Day е името на enum и има седем константи, представляващи дните от седмицата. Enum може също да има допълнителни полета и методи, което ги прави по-гъвкави и мощни от обикновените постоянни стойности.

Преобразуване на низ в Enum:

Когато имате представяне на низ и искате да го конвертирате в enum, можете да следвате различни тактики, базирани на вашите изисквания. Тук ще говорим за 3 общи метода за извършване на това преобразуване: използването на метода valueOf(), използването на персонализирано съпоставяне и използването на метода Enum.ValueOf().

Метод 1: Използване на метод valueOf().

Максималният пряк начин за преобразуване на низ в enum е с помощта на използването на техниката valueOf(), осигурена чрез самото enum. Този подход приема името на enum consistent като низ и връща съответното enum regular, ако бъде открито. Ето един пример:

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

Изход:

 FRIDAY 

В този пример преобразуваме низа „ПЕТЪК“ в преброяването Day чрез извикване на метода valueOf(). Резултатът е константата enum Day.FRIDAY, която след това се отпечатва на конзолата.

Важно е да се отбележи, че методът valueOf() е чувствителен към малки и малки букви и ако низът не съответства на константа enum, ще бъде хвърлено изключение java.lang.IllegalArgumentException. За да се справите с това, можете да обвиете преобразуването в блок try-catch, за да се справите грациозно с изключението.

Метод 2: Използване на персонализирано картографиране

В някои случаи може да се наложи да извършите персонализирано съпоставяне между представянето на низ и константата enum. Този подход е полезен, когато стойностите на низовете не съвпадат точно с имената на константите enum. Ето един пример:

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

Изход:

 FRIDAY 

В този пример преброяването Day има допълнително поле, наречено съкращение, което представлява по-кратко низово представяне на деня. Ние дефинираме персонализиран метод fromAbbreviation(), който извършва преобразуването въз основа на съкращението. Ако съкращението съвпада с която и да е enum константа, се връща съответната enum константа; в противен случай се хвърля изключение.

Метод 3: Използване на метода Enum.valueOf().

Третият метод включва използването на метода Enum.valueOf(), който е метод с общо предназначение за конвертиране на низове в enum константи. Ето един пример:

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

Изход:

 SUNDAY 

В този пример предаваме класа enum (Day.class) и представянето на низ (dayString) към метода Enum.valueOf(). Той връща съответната константа enum, ако бъде намерена, или хвърля IllegalArgumentException, ако не бъде намерено съвпадение.

В тази статия проучихме различни методи за конвертиране на низ в enum в Java. Обсъдихме използването на метода valueOf(), създаване на персонализирано съпоставяне и използване на метода Enum.valueOf(). В зависимост от вашите изисквания можете да изберете най-подходящия подход. Не забравяйте да обработвате изключения, когато използвате метода valueOf() и помислете за персонализирано съпоставяне, когато стойностите на низовете не съвпадат директно с имената на константите enum.