Konvertere strenger til Enums i Java

1. Introduksjon

I denne korte artikkelen vil vi se hvordan du raskt konverterer en streng til en enum i Java.

2. Oppsett

Vi har å gjøre med kjernen i Java, så vi trenger ikke legge til flere gjenstander. Vi vil jobbe med PizzaLeveringStatusEnum fra enums guide-artikkelen.

3. Konvertering

Enums ligner på standard Java-klasser, og deres verdier kan nås ved å bruke punktnotasjonen. Så for å få tilgang til KLAR verdien av PizzaLeveringStatusEnum, ville vi gjort:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

Dette er greit, men hva om vi hadde verdien av statusen lagret som en String, og ønsket å konvertere den til en PizzaStatusEnum? Den naive måten å gjøre dette på ville være å skrive en gigant bytte om uttalelse som returnerer riktig verdi av enum for hver av dens mulige verdier. Men å skrive og vedlikeholde en slik kode er et mareritt og bør unngås for enhver pris.

På den andre siden, de enum type gir en verdien av() metode som tar en String som argument og returnerer det tilsvarende enum gjenstand:

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

Vi kan sjekke at denne tilnærmingen faktisk fungerer gjennom en enhetstest:

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

Det er viktig å huske at verdien av() metoden samsvarer med store og små bokstaver av argumentet som blir levert til den, så overføring av en verdi som ikke samsvarer med tilfellet for originalen enumSine verdier vil føre til en IllegalArgumentException:

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

Å gi en verdi som ikke er en del av originalen enum’S verdier fører også til en IllegalArgumentException:

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

4. Konklusjon

I denne raske artikkelen så vi hvordan du konverterer en String inn i en enum.

Det anbefales på det sterkeste at vi bruker den innebygde verdien av() metoden for enum type, i stedet for å gjøre konverteringen selv.

Som alltid kan koden for denne artikkelen finnes på GitHub.


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