logo

Comment convertir une chaîne en énumération en Java ?

Les énumérations Java sont des types de données puissants qui représentent un ensemble fixe de constantes. Ils sont couramment utilisés pour décrire un ensemble spécifique de valeurs qu'un objet peut prendre. Parfois, vous souhaiterez peut-être convertir une illustration de chaîne en une valeur d'énumération. Dans ce contexte, nous explorerons diverses stratégies pour convertir une chaîne en énumération en Java, vous proposant tout un programme pour une meilleure compréhension.

Comprendre Enum en Java :

Avant de plonger dans le processus de conversion, récapitulons brièvement l'énumération Java. Les énumérations, ou enum en abrégé, ont été introduites dans Java 5 pour fournir une manière plus structurée de représenter les valeurs constantes. Une déclaration enum définit un ensemble fixe de valeurs qu'une variable de ce type enum peut prendre. Chaque valeur d'une énumération est appelée une constante d'énumération.

Voici un exemple de déclaration enum :

 public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 

Dans ce cas, Day est le nom de l'énumération et comporte sept constantes représentant les jours de la semaine. Enum peut également avoir des champs et des méthodes supplémentaires, les rendant plus flexibles et plus puissants que de simples valeurs constantes.

Conversion d'une chaîne en énumération :

Lorsque vous disposez d'une représentation sous forme de chaîne et que vous souhaitez également la convertir en énumération, vous pouvez suivre différentes tactiques en fonction de vos besoins. Ici, nous parlerons de 3 méthodes courantes pour effectuer cette conversion : l'utilisation de la méthode valueOf(), l'utilisation d'un mappage personnalisé et l'utilisation de la méthode Enum.ValueOf().

Méthode 1 : Utilisation de la méthode valueOf()

La manière la plus directe de convertir une chaîne en énumération consiste à utiliser la technique valueOf() fournie au moyen de l'énumération elle-même. Cette approche prend le nom de l'énumération cohérente sous forme de chaîne et renvoie l'énumération régulière correspondante si elle est découverte. Voici un exemple :

StringToEnumExample.java

 public class StringToEnumExample { public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { String dayString = 'FRIDAY'; Day day = Day.valueOf(dayString); System.out.println(day); // Output: FRIDAY } } 

Sortir:

 FRIDAY 

Dans cet exemple, nous convertissons la chaîne « FRIDAY » en énumération Day en appelant la méthode valueOf(). Le résultat est la constante d'énumération Day.FRIDAY, qui est ensuite imprimée sur la console.

Il est important de noter que la méthode valueOf() est sensible à la casse et si la chaîne ne correspond à aucune constante d'énumération, une exception java.lang.IllegalArgumentException sera levée. Pour gérer cela, vous pouvez envelopper la conversion dans un bloc try-catch pour gérer l'exception avec élégance.

Méthode 2 : utilisation d'un mappage personnalisé

Dans certains cas, vous devrez peut-être effectuer un mappage personnalisé entre la représentation sous forme de chaîne et la constante enum. Cette approche est utile lorsque les valeurs de chaîne ne correspondent pas exactement aux noms de constantes enum. Voici un exemple :

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with associated abbreviations public enum Day { MONDAY('Mon'), TUESDAY('Tue'), WEDNESDAY('Wed'), THURSDAY('Thu'), FRIDAY('Fri'), SATURDAY('Sat'), SUNDAY('Sun'); // Private field to store the abbreviation for each day private final String abbreviation; // Constructor to initialize the abbreviation for each enum constant Day(String abbreviation) { this.abbreviation = abbreviation; } // Getter method to retrieve the abbreviation for a specific day public String getAbbreviation() { return abbreviation; } // Custom method to convert an abbreviation string to the corresponding enum constant public static Day fromAbbreviation(String abbreviation) { for (Day day : Day.values()) { if (day.getAbbreviation().equalsIgnoreCase(abbreviation)) { return day; } } // If no match is found, throw an IllegalArgumentException throw new IllegalArgumentException('Invalid abbreviation: ' + abbreviation); } } public static void main(String[] args) { String dayString = 'Fri'; // Convert the abbreviation string to the corresponding Day enum constant Day day = Day.fromAbbreviation(dayString); System.out.println(day); // Output: FRIDAY } } 

Sortir:

 FRIDAY 

Dans cet exemple, l'énumération Day comporte un champ supplémentaire appelé abréviation, qui représente une représentation sous forme de chaîne plus courte du jour. Nous définissons une méthode personnalisée fromAbbreviation() qui effectue la conversion en fonction de l'abréviation. Si l'abréviation correspond à une constante d'énumération, la constante d'énumération correspondante est renvoyée ; sinon, une exception est levée.

Méthode 3 : utilisation de la méthode Enum.valueOf()

La troisième méthode implique l'utilisation de la méthode Enum.valueOf(), qui est une méthode à usage général pour convertir des chaînes en constantes d'énumération. Voici un exemple :

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with seven constants representing the days of the week public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { // Define the string representation of the day String dayString = 'SUNDAY'; // Convert the string to the corresponding Day enum constant using Enum.valueOf() Day day = Enum.valueOf(Day.class, dayString); // Print the value of the day System.out.println(day); // Output: SUNDAY } } 

Sortir:

 SUNDAY 

Dans cet exemple, nous transmettons la classe enum (Day.class) et la représentation sous forme de chaîne (dayString) à la méthode Enum.valueOf(). Il renvoie la constante enum correspondante si elle est trouvée, ou lève une IllegalArgumentException si aucune correspondance n'est trouvée.

Dans cet article, nous avons exploré différentes méthodes pour convertir une chaîne en énumération en Java. Nous avons discuté de l'utilisation de la méthode valueOf(), de la création d'un mappage personnalisé et de l'utilisation de la méthode Enum.valueOf(). En fonction de vos besoins, vous pouvez choisir l'approche la plus appropriée. N'oubliez pas de gérer les exceptions lorsque vous utilisez la méthode valueOf() et envisagez un mappage personnalisé lorsque les valeurs de chaîne ne correspondent pas directement aux noms de constantes enum.