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.