Java-enum zijn krachtige gegevenstypen die een vaste reeks constanten vertegenwoordigen. Ze worden vaak gebruikt om een specifieke reeks waarden te schetsen die een object kan aannemen. Soms wilt u misschien een tekenreeksillustratie omzetten in een enumwaarde. In deze context zullen we verschillende strategieën onderzoeken om een string naar een enum in Java te converteren, waarbij we je een heel programma aanbieden voor een beter begrip.
Enum in Java begrijpen:
Voordat we in het conversieproces duiken, zullen we Java enum kort samenvatten. Opsommingen, of kortweg enum, zijn in Java 5 geïntroduceerd om een meer gestructureerde manier te bieden om constante waarden weer te geven. Een enum-declaratie definieert een vaste reeks waarden die een variabele van dat enum-type kan aannemen. Elke waarde in een enum wordt een enum-constante genoemd.
Hier is een voorbeeld van een enum-declaratie:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
In dit geval is Dag de naam van de opsomming en heeft deze zeven constanten die de dagen van de week vertegenwoordigen. Enum kan ook extra velden en methoden bevatten, waardoor ze flexibeler en krachtiger zijn dan eenvoudige constante waarden.
Een string naar Enum converteren:
Als u een tekenreeksrepresentatie heeft en deze naar een enum wilt converteren, kunt u verschillende tactieken volgen op basis van uw vereisten. Hier zullen we drie algemene methoden bespreken om deze conversie uit te voeren: het gebruik van de valueOf()-methode, het gebruik van een aangepaste mapping en het gebruik van de Enum.ValueOf()-methode.
Methode 1: Methode valueOf() gebruiken
De maximale directe manier om een string naar een enum te converteren is met behulp van de valueOf() techniek die wordt geleverd door middel van de enum zelf. Deze aanpak neemt de naam van de enum-consistent als een tekenreeks en retourneert de overeenkomstige enum-reguliere als deze wordt ontdekt. Hier is een voorbeeld:
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 } }
Uitgang:
FRIDAY
In dit voorbeeld converteren we de tekenreeks 'FRIDAY' naar de Day-enum door de methode valueOf() aan te roepen. Het resultaat is de opsommingsconstante Day.FRIDAY, die vervolgens naar de console wordt afgedrukt.
Het is belangrijk op te merken dat de methode valueOf() hoofdlettergevoelig is, en als de tekenreeks niet overeenkomt met een enum-constante, wordt er een java.lang.IllegalArgumentException gegenereerd. Om dit af te handelen, kunt u de conversie in een try-catch-blok verpakken om de uitzondering netjes af te handelen.
Methode 2: Een aangepaste toewijzing gebruiken
In sommige gevallen moet u mogelijk een aangepaste toewijzing uitvoeren tussen de tekenreeksrepresentatie en de enum-constante. Deze aanpak is handig als de tekenreekswaarden niet exact overeenkomen met de namen van de enum-constanten. Hier is een voorbeeld:
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 } }
Uitgang:
FRIDAY
In dit voorbeeld heeft de Dagopsomming een extra veld met de naam afkorting, dat een kortere tekenreeksrepresentatie van de dag vertegenwoordigt. We definiëren een aangepaste methode fromAbbreviation() die de conversie uitvoert op basis van de afkorting. Als de afkorting overeenkomt met een enumconstante, wordt de corresponderende enumconstante geretourneerd; anders wordt er een uitzondering gegenereerd.
Methode 3: De methode Enum.valueOf() gebruiken
De derde methode omvat het gebruik van de Enum.valueOf()-methode, een algemene methode voor het converteren van tekenreeksen naar enum-constanten. Hier is een voorbeeld:
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 } }
Uitgang:
SUNDAY
In dit voorbeeld geven we de klasse enum (Day.class) en de tekenreeksrepresentatie (dayString) door aan de methode Enum.valueOf(). Het retourneert de overeenkomstige enum-constante als deze wordt gevonden, of genereert een IllegalArgumentException als er geen overeenkomst wordt gevonden.
In dit artikel hebben we verschillende methoden onderzocht voor het converteren van een string naar een enum in Java. We bespraken het gebruik van de valueOf()-methode, het maken van een aangepaste toewijzing en het gebruik van de Enum.valueOf()-methode. Afhankelijk van uw wensen kunt u de meest geschikte aanpak kiezen. Vergeet niet om uitzonderingen af te handelen wanneer u de methode valueOf() gebruikt, en overweeg een aangepaste toewijzing wanneer de tekenreekswaarden niet rechtstreeks overeenkomen met de namen van de enum-constanten.