enum in Java (original) (raw)

Last Updated : 09 Oct, 2025

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

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);
}

}

`

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);
}

}

`

Properties of Enum in Java

There are certain properties followed by Enum as mentioned below:

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");
    }
}

}

`

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());
}

}

`

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);
    }
}

}

`

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:

**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.