Enum Java são tipos de dados poderosos que representam um conjunto fixo de constantes. Eles são comumente usados para delinear um conjunto específico de valores que um objeto pode assumir. Às vezes, você pode querer converter uma ilustração de string em um valor enum. Neste contexto, exploraremos diversas estratégias para converter uma string em um enum em Java, oferecendo a você um programa completo para um melhor entendimento.
Compreendendo Enum em Java:
Antes de mergulhar no processo de conversão, vamos recapitular brevemente o enum Java. Enumerações, ou enum, foram introduzidas em Java 5 para fornecer uma maneira mais estruturada de representar valores constantes. Uma declaração enum define um conjunto fixo de valores que uma variável desse tipo enum pode assumir. Cada valor em um enum é chamado de constante enum.
Aqui está um exemplo de declaração enum:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Nesse caso, Dia é o nome da enumeração e possui sete constantes que representam os dias da semana. Enum também pode ter campos e métodos adicionais, tornando-os mais flexíveis e poderosos do que simples valores constantes.
Convertendo uma String em Enum:
Quando você tem uma representação de string e deseja convertê-la em um enum, você pode seguir táticas diferentes com base em seus requisitos. Aqui falaremos de 3 métodos comuns para realizar essa conversão: o uso do método valueOf(), o uso de um mapeamento customizado e o uso do método Enum.ValueOf().
Método 1: usando o método valueOf()
A maneira mais direta de converter uma string em um enum é usando a técnica valueOf() fornecida pelo próprio enum. Essa abordagem considera o nome do enum consistente como uma string e retorna o enum regular correspondente, se descoberto. Aqui está um exemplo:
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 } }
Saída:
FRIDAY
Neste exemplo, convertemos a string 'FRIDAY' na enumeração Day chamando o método valueOf(). O resultado é a constante enum Day.FRIDAY, que é então impressa no console.
É importante observar que o método valueOf() diferencia maiúsculas de minúsculas e, se a string não corresponder a nenhuma constante enum, uma java.lang.IllegalArgumentException será lançada. Para lidar com isso, você pode agrupar a conversão em um bloco try-catch para tratar a exceção normalmente.
Método 2: usando um mapeamento personalizado
Em alguns casos, pode ser necessário realizar um mapeamento personalizado entre a representação de string e a constante enum. Essa abordagem é útil quando os valores da string não correspondem exatamente aos nomes das constantes enum. Aqui está um exemplo:
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 } }
Saída:
FRIDAY
Neste exemplo, o enum Day possui um campo adicional chamado abreviação, que representa uma representação de string mais curta do dia. Definimos um método customizado fromAbbreviation() que realiza a conversão com base na abreviatura. Se a abreviatura corresponder a qualquer constante enum, a constante enum correspondente será retornada; caso contrário, uma exceção será lançada.
Método 3: usando o método Enum.valueOf()
O terceiro método envolve o uso do método Enum.valueOf(), que é um método de uso geral para converter strings em constantes enum. Aqui está um exemplo:
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 } }
Saída:
SUNDAY
Neste exemplo, passamos a classe enum (Day.class) e a representação de string (dayString) para o método Enum.valueOf(). Ele retorna a constante enum correspondente, se encontrada, ou lança uma IllegalArgumentException se nenhuma correspondência for encontrada.
Neste artigo, exploramos diferentes métodos para converter uma string em um enum em Java. Discutimos o uso do método valueOf(), a criação de um mapeamento personalizado e a utilização do método Enum.valueOf(). Dependendo de suas necessidades, você pode escolher a abordagem mais apropriada. Lembre-se de lidar com exceções ao usar o método valueOf() e considere um mapeamento personalizado quando os valores da string não corresponderem diretamente aos nomes das constantes enum.