Konvertering af strenge til Enums i Java

1. Introduktion

I denne korte artikel vil vi se, hvordan man hurtigt konverterer en streng til en enum i Java.

2. Opsætning

Vi har at gøre med core Java, så vi behøver ikke tilføje yderligere artefakter. Vi vil arbejde med PizzaLeveringStatusEnum fra artiklen om enums-guide.

3. Konverteringen

Enums ligner standard Java-klasser, og deres værdier kan tilgås ved hjælp af punktnotationen. Så for at få adgang til PARAT Værdi af PizzaLeveringStatusEnum, ville vi gøre:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

Dette er fint, men hvad nu hvis vi havde værdien af ​​status gemt som en Snorog ønskede at konvertere det til en PizzaStatusEnum? Den naive måde at gøre dette på ville være at skrive en kæmpe kontakt sætning, der returnerer den korrekte værdi af enum for hver af dens mulige værdier. Men at skrive og vedligeholde en sådan kode er et mareridt og bør undgås for enhver pris.

På den anden side, det enum type giver en Værdi af() metode, der tager en Snor som et argument og returnerer det tilsvarende enum objekt:

PizzaStatusEnum readyStatus = PizzaStatusEnum.valueOf ("KLAR");

Vi kan kontrollere, at denne tilgang faktisk fungerer gennem en enhedstest:

@Test offentlig ugyldig nårConvertedIntoEnum_thenGetsConvertedCorrectly () {String pizzaEnumValue = "KLAR"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); assertTrue (pizzaStatusEnum == PizzaStatusEnum.READY); }

Det er vigtigt at huske, at Værdi af() metoden matcher store og små bogstaver af det argument, der er leveret til det, så det overfører en værdi, der ikke matcher tilfældet med nogen af ​​originalen enum'S værdier ville føre til en IllegalArgumentException:

@Test (forventet = IllegalArgumentException.class) offentlig ugyldig nårConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); } 

At videregive en værdi, der ikke er en del af originalen enum'S værdier fører også til en IllegalArgumentException:

@Test (forventet = IllegalArgumentException.class) offentlig ugyldig nårConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "ugyldig"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); }

4. Konklusion

I denne hurtige artikel så vi, hvordan man konverterer en Snor ind i en enum.

Det anbefales stærkt, at vi bruger den indbyggede Værdi af() metode til enum skriv i stedet for selv at lave konverteringen.

Som altid kan koden til denne artikel findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found