Pretvaranje nizova u enume u Javi

1. Uvod

U ovom kratkom članku vidjet ćemo kako brzo pretvoriti String u enum u Javi.

2. Postavljanje

Imamo posla s jezgrom Jave pa ne moramo dodavati nikakve dodatne artefakte. Radit ćemo s PizzaDeliveryStatusEnum iz članka s vodičem za nabrajanje.

3. Pretvorba

Enum slični su standardnim Java klasama, a njihovim se vrijednostima može pristupiti pomoću točkaste oznake. Dakle, za pristup SPREMAN vrijednost PizzaDeliveryStatusEnum, učinili bismo:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

To je u redu, ali što ako bismo vrijednost statusa pohranili kao Niz, i željeli su ga pretvoriti u PizzaStatusEnum? Naivan način za to bio bi pisanje diva sklopka izjava koja vraća ispravnu vrijednost nabrajanje za svaku njegovu moguću vrijednost. No pisanje i održavanje takvog koda noćna je mora i treba ga izbjegavati pod svaku cijenu.

S druge strane, the nabrajanje tip pruža a vrijednost() metoda koja traje a Niz kao argument i vraća odgovarajući nabrajanje objekt:

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

Možemo li provjeriti da li ovaj pristup zapravo funkcionira kroz unit test:

@Test public void whenConvertedIntoEnum_thenGetsConvertedCorrect () {String pizzaEnumValue = "READY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); assertTrue (pizzaStatusEnum == PizzaStatusEnum.READY); }

Važno je zapamtiti da vrijednost() metoda podudara velika i mala slova s ​​argumentom koji mu je dostavljen, pa prosljeđuje vrijednost koja se ne podudara s velikim brojem izvornika nabrajanje'S vrijednosti bi dovele do IlegalArgumentException:

@Test (očekuje se = IllegalArgumentException.class) javna praznina kada jeConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); } 

Prosljeđivanje vrijednosti koja nije dio izvornika nabrajanje'S vrijednosti također dovodi do an IlegalArgumentException:

@Test (očekuje se = IllegalArgumentException.class) javna praznina kada jeConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); }

4. Zaključak

U ovom kratkom članku vidjeli smo kako pretvoriti Niz u an nabrajanje.

Preporučujemo da koristimo ugrađenu vrijednost() metoda nabrajanje tipa, umjesto da sami izvršimo pretvorbu.

Kao i uvijek, kôd za ovaj članak možete pronaći na GitHubu.