Home

6. Enum and Switch

Home » Java Quick Start » Quick Start Tutorial » 6. Enum and Switch

Tips!

In the previous example, we used an integer value to define testValue. But if we know that only a limited set of possibilities should be used, defining an "enum" with the available choices is a better option.

Enums are, by convention, typed in uppercase.

public class EnumSwitch {
    public static void main (String[] args) {
        // Define value based on an enum
        TestOption option = TestOption.TYPE_2;

        // Compare the value with the available options
        switch(option) {
            case TYPE_1:
                System.out.println("Do something specific for Type 1");
                break;
            case TYPE_2:
                System.out.println("Do something specific for Type 2");
                break;
            case TYPE_3:
                System.out.println("Do something specific for Type 3");
                break;
            default:
                System.out.println("No action defined for this type: " + option);
        }
    }

    enum TestOption {
        TYPE_1, TYPE_2, TYPE_3, TYPE_4, TYPE_5, UNKNOWN;
    }
}

Change the value in line 4 to check the output, for instance when running with TYPE_2 and TYPE_4:

$ java EnumSwitch.java
Do something specific for Type 2

$ java EnumSwitch.java
No action defined for this type: TYPE_4

Instead of if/then/else we are now using switch/case/default, resulting in more readable code. This is also easier to use and maintain as we know exactly which are the possible values.

Don't forget to add the break; lines in each case. Try removing them and re-running the example.

$ java EnumSwitch.java
Do something specific for Type 2
Do something specific for Type 3
No action defined for this type: TYPE_2

That does not what we wanted to achieve! All the cases after the valid one are returned now... That's also the reason we don't need to add a break in the default block, as this is the last one anyhow.

Subscribe to foojay updates:

https://foojay.io/feed/
Copied to the clipboard