Java enum ovat tehokkaita tietotyyppejä, jotka edustavat kiinteää vakiojoukkoa. Niitä käytetään yleisesti määrittämään tietty arvojoukko, jonka objekti voi ottaa. Joskus saatat haluta muuntaa merkkijonokuvan enum-arvoksi. Tässä yhteydessä tutkimme erilaisia strategioita merkkijonon muuntamiseksi enumiksi Java-kielellä ja tarjoamme sinulle kokonaisen ohjelman ymmärtämisen parantamiseksi.
Enumin ymmärtäminen Javassa:
Ennen kuin sukeltaa muunnosprosessiin, kerrotaan lyhyesti Java-enum. Luettelot tai lyhennettynä enum otettiin käyttöön Java 5:ssä tarjotakseen jäsennellymmän tavan esittää vakioarvoja. Enum-ilmoitus määrittää kiinteän joukon arvoja, jotka kyseisen enum-tyypin muuttuja voi ottaa. Jokaista enumin arvoa kutsutaan enumvakioksi.
Tässä on esimerkki enum-ilmoituksesta:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Tässä tapauksessa päivä on enumin nimi, ja siinä on seitsemän vakiota, jotka edustavat viikonpäiviä. Enum voi sisältää myös lisäkenttiä ja menetelmiä, mikä tekee niistä joustavampia ja tehokkaampia kuin yksinkertaiset vakioarvot.
Merkkijonon muuntaminen enumiksi:
Kun sinulla on merkkijonoesitys ja haluat myös muuntaa sen enumiksi, voit noudattaa erilaisia taktiikoita tarpeidesi mukaan. Tässä puhutaan kolmesta yleisestä menetelmästä tämän muunnoksen suorittamiseen: valueOf()-menetelmän käyttö, mukautetun kartoituksen käyttö ja Enum.ValueOf()-menetelmän käyttö.
Tapa 1: ValueOf()-menetelmän käyttäminen
Suurin suora tapa muuntaa merkkijono enumiksi on arvoOf()-tekniikan käyttö, joka on saatu itse enumin avulla. Tämä lähestymistapa ottaa johdonmukaisen enum-nimen merkkijonona ja palauttaa vastaavan enum-säännöllisen, jos se löydetään. Tässä on esimerkki:
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 } }
Lähtö:
FRIDAY
Tässä esimerkissä muunnetaan merkkijono 'PERJANTAI' Day enumiksi kutsumalla valueOf()-metodi. Tuloksena on Day.FRIDAY enum-vakio, joka tulostetaan sitten konsoliin.
On tärkeää huomata, että valueOf()-menetelmässä kirjainkoolla on merkitystä, ja jos merkkijono ei vastaa mitään enum-vakiota, java.lang.IllegalArgumentException heitetään. Tämän käsittelemiseksi voit kääriä muunnoksen try-catch-lohkoon käsitelläksesi poikkeuksen sulavasti.
Tapa 2: Mukautetun kartoituksen käyttäminen
Joissakin tapauksissa saatat joutua tekemään mukautetun yhdistämisen merkkijonoesityksen ja enum-vakion välillä. Tämä lähestymistapa on hyödyllinen, kun merkkijonoarvot eivät vastaa täsmälleen enum-vakioiden nimiä. Tässä on esimerkki:
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 } }
Lähtö:
FRIDAY
Tässä esimerkissä Päiväluettelossa on lisäkenttä nimeltä lyhenne, joka edustaa päivän lyhyempää merkkijonoesitystä. Määrittelemme mukautetun menetelmän Abbreviation():sta, joka suorittaa muunnoksen lyhenteen perusteella. Jos lyhenne vastaa mitä tahansa enum-vakiota, palautetaan vastaava enum-vakio; muuten tehdään poikkeus.
Tapa 3: Enum.valueOf()-menetelmän käyttäminen
Kolmannessa menetelmässä käytetään Enum.valueOf()-menetelmää, joka on yleiskäyttöinen menetelmä merkkijonojen muuttamiseksi enum-vakioksi. Tässä on esimerkki:
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 } }
Lähtö:
SUNDAY
Tässä esimerkissä välitämme enum-luokan (Day.class) ja merkkijonoesityksen (dayString) menetelmälle Enum.valueOf(). Se palauttaa vastaavan enum-vakion, jos se löytyy, tai antaa IllegalArgumentException-ilmoituksen, jos vastaavuutta ei löydy.
Tässä artikkelissa tutkimme erilaisia menetelmiä merkkijonon muuntamiseksi enumiksi Javassa. Keskustelimme valueOf()-menetelmän käytöstä, mukautetun kartoituksen luomisesta ja Enum.valueOf()-menetelmän käyttämisestä. Riippuen tarpeistasi, voit valita sopivimman lähestymistavan. Muista käsitellä poikkeuksia, kun käytät valueOf()-metodia, ja harkitse mukautettua yhdistämistä, kun merkkijonoarvot eivät vastaa suoraan enum-vakioiden nimiä.