logo

Hogyan lehet egy karakterláncot Enummá konvertálni Java-ban?

A Java enum erős adattípusok, amelyek rögzített konstanskészletet képviselnek. Általában arra használják, hogy felvázolják az objektum által felvehető meghatározott értékkészletet. Néha előfordulhat, hogy egy karakterlánc-illusztrációt enum értékké alakíthat át. Ebben az összefüggésben különféle stratégiákat fogunk megvizsgálni egy karakterlánc enummá konvertálására Java nyelven, és egy teljes programot kínálunk Önnek a jobb megértés érdekében.

Az Enum értelmezése Java nyelven:

Mielőtt belemerülnénk az átalakítási folyamatba, röviden foglaljuk össze a Java enum-ot. A felsorolásokat vagy röviden enum-ot a Java 5-ben vezették be, hogy az állandó értékek strukturáltabb megjelenítését biztosítsák. Az enum deklaráció egy rögzített értékkészletet határoz meg, amelyet az adott enum típusú változó felvehet. Az enum minden egyes értékét enum állandónak nevezzük.

Íme egy példa egy enum deklarációra:

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

Ebben az esetben a Day az enum neve, és hét állandója van, amelyek a hét napjait jelentik. Az Enum további mezőket és metódusokat is tartalmazhat, így rugalmasabbak és hatékonyabbak, mint az egyszerű konstans értékek.

Karakterlánc konvertálása enummá:

Ha van egy karakterlánc-reprezentációja, és azt is szeretné konvertálni enummá, akkor az igényeinek megfelelően különböző taktikákat követhet. Itt 3 általános módszert fogunk beszélni ennek az átalakításnak a végrehajtására: a valueOf() metódus, az egyéni leképezés és az Enum.ValueOf() metódus használata.

1. módszer: ValueOf() metódus használata

A karakterlánc enummá konvertálásának maximális közvetlen módja a valueOf() technika használata, amelyet maga az enum szolgáltat. Ez a megközelítés a konzisztens enum nevét karakterláncként veszi fel, és a megfelelő enum regulárist adja vissza, ha felfedezi. Íme egy példa:

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

Kimenet:

 FRIDAY 

Ebben a példában a 'FRIDAY' karakterláncot Day enummá alakítjuk a valueOf() metódus meghívásával. Az eredmény a Day.FRIDAY enum állandó, amely azután kinyomtatásra kerül a konzolra.

Fontos megjegyezni, hogy a valueOf() metódus megkülönbözteti a kis- és nagybetűket, és ha a karakterlánc nem egyezik egyetlen enum állandóval sem, a program egy java.lang.IllegalArgumentException kivételt dob. Ennek kezelésére csomagolhatja a konverziót egy try-catch blokkba, hogy kecsesen kezelje a kivételt.

2. módszer: Egyéni leképezés használata

Bizonyos esetekben előfordulhat, hogy egyéni leképezést kell végrehajtania a karakterlánc-ábrázolás és az enum-konstans között. Ez a megközelítés akkor hasznos, ha a karakterláncok értékei nem egyeznek pontosan az enum állandó nevével. Íme egy példa:

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

Kimenet:

 FRIDAY 

Ebben a példában a Day enum egy további rövidítés nevű mezővel rendelkezik, amely a nap rövidebb karakterlánc-ábrázolását jelenti. Az Abbreviation() függvényből meghatározunk egy egyéni metódust, amely a rövidítés alapján hajtja végre az átalakítást. Ha a rövidítés egyezik bármely enum állandóval, akkor a megfelelő enum állandót adjuk vissza; ellenkező esetben kivételt dobnak.

3. módszer: Az Enum.valueOf() metódus használata

A harmadik módszer az Enum.valueOf() metódus használatát foglalja magában, amely egy általános célú metódus a karakterláncok enum konstanssá alakítására. Íme egy példa:

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

Kimenet:

 SUNDAY 

Ebben a példában az enum osztályt (Day.class) és a karakterlánc reprezentációt (dayString) adjuk át az Enum.valueOf() metódusnak. Ha megtalálta, visszaadja a megfelelő enum-állandót, vagy ha nem található egyezés, IllegalArgumentException-t ad vissza.

Ebben a cikkben különböző módszereket vizsgáltunk meg egy karakterlánc enummá konvertálására Java nyelven. Megbeszéltük a valueOf() metódus használatát, az egyéni leképezés létrehozását és az Enum.valueOf() metódus használatát. Igényeitől függően kiválaszthatja a legmegfelelőbb megközelítést. Ne felejtse el kezelni a kivételeket a valueOf() metódus használatakor, és fontolja meg az egyéni leképezést, ha a karakterláncok értékei nem egyeznek közvetlenül az enum állandó nevével.