Strings converteren naar Enums in Java

1. Inleiding

In dit korte artikel zullen we zien hoe je snel een string naar een enum in Java kunt converteren.

2. Installatie

We hebben te maken met core Java, dus we hoeven geen extra artefacten toe te voegen. We zullen werken met de PizzaDeliveryStatusEnum uit het enums-gidsartikel.

3. De conversie

Enums zijn vergelijkbaar met standaard Java-klassen, en hun waarden zijn toegankelijk met behulp van de puntnotatie. Dus om toegang te krijgen tot het KLAAR waarde van PizzaDeliveryStatusEnum, zouden we doen:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

Dit is prima, maar wat als we de waarde van de status hadden opgeslagen als een Draad, en wilde het omzetten in een PizzaStatusEnum? De naïeve manier om dit te doen zou zijn door een reus te schrijven schakelaar instructie die de juiste waarde retourneert van de opsomming voor elk van zijn mogelijke waarden. Maar het schrijven en onderhouden van dergelijke code is een nachtmerrie en moet koste wat het kost worden vermeden.

Aan de andere kant, de opsomming type biedt een waarde van() methode waarvoor een Draad als een argument en retourneert het overeenkomstige opsomming voorwerp:

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

We kunnen controleren of deze aanpak echt werkt door middel van een unit-test:

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

Het is belangrijk om te onthouden dat de waarde van() methode doet een hoofdlettergevoelige overeenkomst met het argument dat eraan is verstrekt, dus geeft een waarde door die niet overeenkomt met het hoofdlettergebruik van een van de originele opsomming‘S waarden zouden leiden tot een IllegalArgumentException:

@Test (verwacht = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); } 

Een waarde doorgeven die geen deel uitmaakt van het origineel opsomming‘S waarden leiden ook tot een IllegalArgumentException:

@Test (verwacht = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException () {String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf (pizzaEnumValue); }

4. Conclusie

In dit korte artikel hebben we gezien hoe u een Draad in een opsomming.

Het wordt ten zeerste aanbevolen om de ingebouwde waarde van() methode van de opsomming typ, in plaats van de conversie zelf uit te voeren.

Zoals altijd is de code voor dit artikel te vinden op GitHub.