Open In App

enum in Java

Last Updated : 09 Oct, 2025
Comments
Improve
Suggest changes
281 Likes
Like
Report

In Java, enumerations (enums) are a special type used to define a group of named constants.

  • Enums help in readability, maintainability, and type safety in programs by assigning meaningful names to integer values.
  • Mainly useful when we have a small set of possible values for an item like directions, days of week, etc.

Creating an Enum

Syntax:

enum EnumName {

CONSTANT1, CONSTANT2, CONSTANT3;

}

Java
enum TrafficLight {  RED, GREEN, YELLOW; } public class Test{    public static void main(String[] args){    TrafficLight x = TrafficLight.RED;  System.out.println(x);  } } 

Output
RED 

Declaration of enum in Java

Enum declaration can be done outside a class or inside a class but not inside a method.

1. Declaration outside the class

As we have seen in the above example, enums can be declared outside a class and accessed directly

2. Declaration inside a class

Enums can also be declared inside a class but not inside a method.

Java
public class Test {  enum Color {  RED,  GREEN,  BLUE;  }  // Driver method  public static void main(String[] args) {  Color c1 = Color.RED;  System.out.println(c1);  } } 

Output
RED 

Properties of Enum in Java

There are certain properties followed by Enum as mentioned below:

  • Class Type: Internally implemented as a class.
  • Enum Constants: Each constant is an object of the enum type.
  • Switch Support: Can be used in switch statements.
  • Implicit Modifiers: Constants are public static final.
  • Inheritance: Enums cannot extend classes but can implement interfaces.

Enum in a Switch Statement

Enums can be used in switch statements to handle different cases based on the enum constants.

Java
import java.io.*; class GFG{    // Enum Declared  enum Color {  RED,  GREEN,  BLUE,  YELLOW;  }  public static void main(String[] args){    Color var_1 = Color.YELLOW;  // Switch case with Enum  switch (var_1) {  case RED:  System.out.println("Red color");  break;  case GREEN:  System.out.println("Green color");  break;  case BLUE:  System.out.println("Blue color");  break;  default:  System.out.println("Other color");  }  } } 

Output
Other color 

Enum with Methods and Constructor

Enums can have constructors and methods, executed separately for each constant

Java
enum Color{  RED, GREEN, BLUE;  private Color(){    System.out.println("Constructor called for: " + this);  }  public void display(){    System.out.println("Color is: " + this);  } } public class Test{    public static void main(String[] args){    Color c1 = Color.RED;  c1.display();  } } 

Output
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum with Abstract Methods

Enums can declare abstract methods that each constant must implement.

Java
enum Day{    MONDAY{    public String getNumber(){  return "1st day";     }  },  FRIDAY{    public String getNumber(){  return "5th day";     }  };    public abstract String getNumber(); } public class EnumTest {  public static void main(String[] args){    System.out.println(Day.MONDAY.getNumber());   System.out.println(Day.FRIDAY.getNumber());  } } 

Output
1st day 5th day 

Iterating Enums Using values()

Use EnumType.values() to loop through all enum constants.

Java
enum Color{  RED, GREEN, BLUE;   } public class Test{    public static void main(String[] args){    for (Color c : Color.values()){    System.out.println(c);  }  } } 

Output
RED GREEN BLUE 

Enum and EnumSet (Specific Range Iteration)

EnumSet.range() allows iteration over a specific range of enum constants.

Java
import java.util.EnumSet; public class EnumSetExample{    enum Day{    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;     }  public static void main(String[] args){    EnumSet<Day> workDays = EnumSet.range(Day.TUESDAY, Day.FRIDAY);  for (Day d : workDays){    System.out.println(d);  }  } } 

Output
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Creating a Class with an Enum Member

We can combine enums with regular classes to organize your program logic. An enum can be a member variable in a class, and methods can perform actions based on the enum value.

Java
/*package whatever //do not write package name here */ import java.io.*; enum Day {  MONDAY,  TUESDAY,  WEDNESDAY,  THURSDAY,  FRIDAY,  SATURDAY,  SUNDAY } public class EnumTest {  // Enum member variable  Day day;  // constructor which takes enum value  public EnumTest(Day day) { this.day = day; }  // method to execute action as per enum value  public void tellItLikeItIs()  {  switch (day) {  case MONDAY:  System.out.println("Mondays are tough");  break;  case TUESDAY:  System.out.println("Tuesday are better");  break;  case WEDNESDAY:  System.out.println("Wednesday are okay");  break;  case THURSDAY:  System.out.println("Thursdays are hopeful");  break;  case FRIDAY:  System.out.println("Fridays are exciting");  break;  case SATURDAY:  System.out.println("Saturdays are relaxing");  break;  case SUNDAY:  System.out.println("Sunday are for rest");  break;  default:  System.out.println("Everyday are good");  break;  }  }  public static void main(String[] args)  {  EnumTest firstDay = new EnumTest(Day.MONDAY);  firstDay.tellItLikeItIs();  EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);  thirdDay.tellItLikeItIs();  EnumTest fifthDay = new EnumTest(Day.FRIDAY);  fifthDay.tellItLikeItIs();  EnumTest sixthDay = new EnumTest(Day.SATURDAY);  sixthDay.tellItLikeItIs();  EnumTest seventhDay = new EnumTest(Day.SUNDAY);  seventhDay.tellItLikeItIs();  } } 

Output
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Explanation:

  • The EnumTest class in above code is created with member of type Day. It has constructor which takes Day enum as an argument and assigns it.
  • The class has method tellItLikeItIs(), which prints message based on value of day.
  • The main method includes objects of EnumTest using different Day enum values and calling tellItLikeItIs() method on each.

NOTE: The new keyword is used because EnumTest is a regular class, not an enum, so we create instances and pass the enum value to its constructor.



Article Tags :

Explore