Prevod reťazcov na výčet v Jave

1. Úvod

V tomto krátkom článku uvidíme, ako rýchlo previesť String na enum v Jave.

2. Inštalácia

Máme do činenia s jadrom Java, takže nemusíme pridávať žiadne ďalšie artefakty. Budeme pracovať s PizzaDeliveryStatusEnum z článku sprievodcu enums.

3. Konverzia

Enums sú podobné štandardným triedam Java a k ich hodnotám je možné získať pomocou bodkovej notácie. Takže pre prístup k PRIPRAVENÝ hodnota PizzaDeliveryStatusEnum, urobili by sme:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

To je v poriadku, ale čo keby sme mali hodnotu stavu uloženú ako a Stringa chcel ho previesť na a PizzaStatusEnum? Naivným spôsobom, ako to dosiahnuť, by bolo napísať obra prepínač výkaz vracajúci správnu hodnotu enum pre každú z jeho možných hodnôt. Ale písanie a údržba takéhoto kódu je nočnou morou a malo by sa mu zabrániť za každú cenu.

Na druhej strane, the enum typ poskytuje a hodnota() metóda, ktorá vyžaduje a String ako argument a vráti zodpovedajúce enum objekt:

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

To, či tento prístup skutočne funguje, môžeme skontrolovať prostredníctvom testu jednotky:

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

Je dôležité mať na pamäti, že hodnota() metóda porovnáva veľké a malé písmená v argumente, ktorý je jej zadaný, takže odovzdá hodnotu, ktorá sa nezhoduje s veľkosťou veľkého písmena v žiadnom z originálov enumHodnoty by viedli k IllegalArgumentException:

@Test (očakáva sa = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); } 

Odovzdanie hodnoty, ktorá nie je súčasťou originálu enumHodnoty tiež vedú k IllegalArgumentException:

@Test (očakáva sa = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); }

4. Záver

V tomto rýchlom článku sme videli, ako previesť a String do enum.

Dôrazne sa odporúča, aby sme používali zabudovaný modul hodnota() metóda enum typu, namiesto toho, aby sme robili konverziu sami.

Ako vždy, kód tohto článku nájdete na GitHub.


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