logo

Cum se transformă un șir în Enum în Java?

Java enum sunt tipuri de date puternice care reprezintă un set fix de constante. Ele sunt utilizate în mod obișnuit pentru a contura un set specific de valori pe care le poate lua un obiect. Uneori, poate doriți să convertiți o ilustrație șir într-o valoare enumerare. În acest context, vom explora diverse strategii pentru a converti un șir într-o enumerare în Java, oferindu-vă un program întreg pentru o mai bună înțelegere.

Înțelegerea Enum în Java:

Înainte de a aborda procesul de conversie, să recapitulăm pe scurt enumerarea Java. Enumerările, sau pe scurt enum, au fost introduse în Java 5 pentru a oferi un mod mai structurat de reprezentare a valorilor constante. O declarație de enumerare definește un set fix de valori pe care o variabilă de acel tip de enumerare le poate lua. Fiecare valoare dintr-o enumerare se numește constantă enumerare.

Iată un exemplu de declarație de enumerare:

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

În acest caz, Ziua este numele enumerației și are șapte constante reprezentând zilele săptămânii. Enum poate avea, de asemenea, câmpuri și metode suplimentare, făcându-le mai flexibile și mai puternice decât valorile constante simple.

Convertirea unui șir în Enum:

Când aveți o reprezentare șir și doriți să o convertiți într-o enumerare, puteți urma diferite tactici în funcție de cerințele dvs. Aici, vom vorbi despre 3 metode comune pentru a acționa această conversie: utilizarea metodei valueOf(), utilizarea unei mapări personalizate și utilizarea metodei Enum.ValueOf().

Metoda 1: Folosind metoda valueOf().

Modalitatea maximă directă de a converti un șir într-o enumerare este cu ajutorul tehnicii valueOf() furnizată prin intermediul enumerarii în sine. Această abordare ia numele enumerarii consecvent ca șir și returnează enumerarea obișnuită, dacă este descoperită. Iată un exemplu:

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

Ieșire:

 FRIDAY 

În acest exemplu, convertim șirul „VINERI” în enumerarea Day apelând metoda valueOf(). Rezultatul este constanta de enumerare Day.FRIDAY, care este apoi tipărită pe consolă.

Este important de reținut că metoda valueOf() face distincție între majuscule și minuscule, iar dacă șirul nu se potrivește cu nicio constantă de enumerare, va fi lansată o excepție java.lang.IllegalArgumentException. Pentru a gestiona acest lucru, puteți include conversia într-un bloc try-catch pentru a gestiona excepția cu grație.

Metoda 2: Utilizarea unei mapări personalizate

În unele cazuri, poate fi necesar să efectuați o mapare personalizată între reprezentarea șirului și constanta enumerare. Această abordare este utilă atunci când valorile șirurilor nu se potrivesc exact cu numele constantelor enumerate. Iată un exemplu:

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

Ieșire:

 FRIDAY 

În acest exemplu, enumerarea Zilei are un câmp suplimentar numit abreviere, care reprezintă o reprezentare mai scurtă șir a zilei. Definim o metodă personalizată din Abrevierea() care efectuează conversia pe baza abrevierei. Dacă abrevierea se potrivește cu orice constantă enumerare, este returnată constanta enumerare corespunzătoare; în caz contrar, se aruncă o excepție.

Metoda 3: Folosind metoda Enum.valueOf().

A treia metodă implică utilizarea metodei Enum.valueOf(), care este o metodă de uz general pentru conversia șirurilor de caractere în constante enumerate. Iată un exemplu:

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

Ieșire:

 SUNDAY 

În acest exemplu, trecem clasa enum (Day.class) și reprezentarea șir (dayString) la metoda Enum.valueOf(). Returnează constanta de enumerare corespunzătoare dacă este găsită sau aruncă o excepție IllegalArgumentException dacă nu este găsită nicio potrivire.

În acest articol, am explorat diferite metode de conversie a unui șir într-o enumerare în Java. Am discutat despre utilizarea metodei valueOf(), crearea unei mapări personalizate și utilizarea metodei Enum.valueOf(). În funcție de cerințele tale, poți alege cea mai potrivită abordare. Nu uitați să gestionați excepțiile atunci când utilizați metoda valueOf() și luați în considerare o mapare personalizată atunci când valorile șirurilor nu se potrivesc direct cu numele constantelor enumerate.