Conversion de chaînes en énumérations en Java

1. Introduction

Dans ce court article, nous verrons comment convertir rapidement une chaîne en une énumération en Java.

2. Configuration

Nous avons affaire au noyau Java, nous n'avons donc pas besoin d'ajouter d'artefacts supplémentaires. Nous travaillerons avec le PizzaDeliveryStatusEnum de l'article du guide enums.

3. La conversion

Les énumérations sont similaires aux classes Java standard et leurs valeurs sont accessibles en utilisant la notation par points. Donc, pour accéder à la valeur READY de PizzaDeliveryStatusEnum , nous ferions:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

C'est bien, mais que se passe-t-il si la valeur du statut est stockée sous forme de chaîne et que nous voulons la convertir en PizzaStatusEnum ? La manière naïve de faire cela serait d'écrire une instruction switch géante renvoyant la valeur correcte de l' énumération pour chacune de ses valeurs possibles. Mais écrire et maintenir un tel code est un cauchemar et doit être évité à tout prix.

D'autre part, le type enum fournit une méthode valueOf () qui prend un String comme argument et retourne l' objet enum correspondant :

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

Nous pouvons vérifier que cette approche fonctionne réellement grâce à un test unitaire:

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

Il est important de se rappeler que la méthode valueOf () fait une correspondance sensible à la casse de l'argument qui lui est fourni, donc passer une valeur qui ne correspond à la casse d'aucune des valeurs de l' énumération d' origine conduirait à une IllegalArgumentException :

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

Passer une valeur qui ne fait pas partie des valeurs de l' énumération d' origine conduit également à une exception IllegalArgumentException :

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

4. Conclusion

Dans cet article rapide, nous avons vu comment convertir une chaîne en une énumération .

Il est fortement recommandé d'utiliser la méthode intégrée valueOf () du type enum , au lieu de faire la conversion nous-mêmes.

Comme toujours, le code de cet article se trouve à l'adresse over sur GitHub.