A Java enum switch/case statement example

Java enum FAQ: Can you share a Java enum switch example, i.e., how to use an enum with a Java switch statement?

In my earlier Java enum examples tutorial, I demonstrated how to declare a simple Java enum, and then how to use an enum with a variety of Java constructs, including a Java switch statement, a for loop, and an if/then statement.

In this enum tutorial, I want to just focus on using an enum in a switch statement. Hopefully this enum/switch example adds a little more complexity to my earlier examples.

A Java enum switch statement example

In this enum/switch example, I first declare an enum type that looks like this:

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

Then in the main portion of the program, I refer to that enum, both in my main method, and in the “print” method that I call from the main method.

Let’s take a look at the Java source code for my enum example, and then I’ll describe it afterwards:

/**
 * A Java enum switch statement (switch/case) example.
 * @author alvin alexander, alvinalexander.com
 */
public class JavaEnumSwitchCaseExample
{

  public static void main(String[] args)
  {
    // loop through the enum values, calling the
    // print method once for each value
    for (Day d: Day.values())
    {
      printTodaysThought(d);
    }
  }

  // a method that prints a String corresponding to the day value
  // that is passed in.
  public static void printTodaysThought(Day theDay)
  {
    switch (theDay)
    {
      case MONDAY:
      case TUESDAY:
      case WEDNESDAY:
      case THURSDAY:  System.out.println("Working for the man :)");
                      break;

      case FRIDAY:    System.out.println("TGIF ");
                      break;

      case SATURDAY:
      case SUNDAY:    System.out.println("Ahh, the weekend ...");
                      break;

      default:        System.out.println("What day is it?");;
    }
  }
}

/**
 * Our "Day" enum type
 */
enum Day
{
  SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY 
}

When you compile and run this code, the output looks like this:

Ahh, the weekend ...
Working for the man :)
Working for the man :)
Working for the man :)
Working for the man :)
TGIF 
Ahh, the weekend ...

The output is in this order because the enum begins on SUNDAY, and goes in order from there until SATURDAY.

Discussion

As with any Java program, the flow of control starts in the main method. Inside main I jump right in with this for loop:

for (Day d: Day.values())
{
  printTodaysThought(d);
}

This “enum for loop” iterates through all the values in the Day enum, using the values method that comes with Java’s enum type. That’s really the only “trick” in this code; the rest of it is a standard Java 5 for loop, and it calls the printTodaysThought method once for each constant in the Day enum.

The printTodaysThought method takes one Day value (theDay), and compares that variable against the constants that are shown in the switch statement. For the values MONDAY through THURSDAY I print one String; for FRIDAY I print a different string; and SATURDAY and SUNDAY print their own string. If a calling program manages to somehow call this method with a different Day value — something which should be really hard to do, unless I add a new value to the Day enum — flow of control will fall down to the default expression.

Summary

I hope this Java enum switch statement example has been helpful. Between my original Java enum tutorial and this tutorial, I hope it helps to see at least two examples of how to use a custom enum type with a switch statement (sometimes called a case statement).

Java enum: What’s Related

As I finish up my Java enum series, here’s a collection of the Java enum tutorials I’ve written. Again, I hope you find them helpful:

Hi,

Thank you for the nice example. Please note that in "switch (theDay)", of theDay is null, you'll get a NullPointerException. Yes, enums are objects, so a variable of enum type may be null. You might have expected that null would fall under the "default" case; not so.

Ole

Add new comment

The content of this field is kept private and will not be shown publicly.

Anonymous format

  • Allowed HTML tags: <em> <strong> <cite> <code> <ul type> <ol start type> <li> <pre>
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.