Sai A Sai A
Updated date Jun 29, 2023
In this blog, we will provide a detailed explanation of different methods to convert a string to an enum in Java, along with code examples and their corresponding output. Whether you are a beginner or an experienced Java developer, this guide will help you master string-to-enum conversion techniques.

Introduction:

Enumerations (enums) in Java are a powerful feature for defining a set of named constants. However, there are scenarios where you may need to convert a string representation into its corresponding enum value. In this blog, we will explore several methods to achieve this conversion, along with code examples and their output.

Method 1: Using valueOf() Method

The valueOf() method is the recommended way to convert a string to an enum. It is automatically generated when you define an enum and returns the enum constant that matches the specified string.

enum Color { RED, GREEN, BLUE }

public class Main {
    public static void main(String[] args) {
        String input = "GREEN";
        Color color = Color.valueOf(input);
        System.out.println("Converted Enum: " + color);
    }
}

Output:

Converted Enum: GREEN

Method 2: Using Enum.valueOf() Method

Another approach is to use the valueOf() method from the Enum class. It takes two parameters: the enum class and the string representation of the enum constant.

enum Color { RED, GREEN, BLUE }

public class Main {
    public static void main(String[] args) {
        String input = "BLUE";
        Color color = Enum.valueOf(Color.class, input);
        System.out.println("Converted Enum: " + color);
    }
}

Output:

Converted Enum: BLUE

Method 3: Implementing a Custom Conversion Method

For a more flexible approach, you can implement a custom conversion method within your enum class. This method iterates over the enum constants, compares their string representations with the input string, and returns the matching enum value.

enum Color { RED, GREEN, BLUE }

public enum Converter {
    INSTANCE;

    public Color fromString(String input) {
        for (Color color : Color.values()) {
            if (color.name().equalsIgnoreCase(input)) {
                return color;
            }
        }
        throw new IllegalArgumentException("Invalid enum constant: " + input);
    }
}

public class Main {
    public static void main(String[] args) {
        String input = "RED";
        Color color = Converter.INSTANCE.fromString(input);
        System.out.println("Converted Enum: " + color);
    }
}

Output:

Converted Enum: RED

Method 4: Using a Map for Conversion

In situations where frequent string-to-enum conversions are required, using a map can offer better performance. This method involves creating a map that associates string representations with their corresponding enum values.

enum Color { RED, GREEN, BLUE }

public enum Converter {
    INSTANCE;

    private static final Map<String, Color> stringToEnum = new HashMap<>();
    static {
        for (Color color : Color.values()) {
            stringToEnum.put(color.name().toLowerCase(), color);
        }
    }

    public Color fromString(String input) {
        return stringToEnum.get(input.toLowerCase());
    }
}

public class Main {
    public static void main(String[] args) {
        String input = "GREEN";
        Color color = Converter.INSTANCE.fromString(input);
        System.out.println("Converted Enum: " + color);
    }
}

Output:

Converted Enum: GREEN

Conclusion:

Converting a string to an enum in Java is a common requirement in various applications. In this blog, we explored multiple methods for achieving this conversion, including the valueOf() method, custom conversion methods, and utilizing maps. By following this comprehensive guide and understanding the code examples and output, you can confidently convert strings to enums in your Java projects.

Comments (0)

There are no comments. Be the first to comment!!!