• An enum type is a special data type that enables for a variable to be a set of predefined constants.


  • The variable must be equal to one of the values that have been predefined for it.


  • Common examples include compass directions (values of NORTH, SOUTH, EAST, and WEST) and the days of the week.


  • Because they are constants, the names of an enum type's fields are in uppercase letters.


  • In the Java programming language, you define an enum type by using the enum keyword. For example, you would specify a days-of-the-week enum type as:


  •  
    public enum Day {
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
        THURSDAY, FRIDAY, SATURDAY 
    }
    
    
  • You should use enum types any time you need to represent a fixed set of constants.


  • Here is some code that shows you how to use the Day enum defined above:


  •  
    public class EnumTest {
    
        public enum Day {
            SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
            THURSDAY, FRIDAY, SATURDAY 
        }
    
    
        Day day;
        
        public EnumTest(Day day) {
            this.day = day;
        }
        
        public void tellItLikeItIs() {
            switch (day) {
                case MONDAY:
                    System.out.println("Mondays are bad.");
                    break;
                        
                case FRIDAY:
                    System.out.println("Fridays are better.");
                    break;
                             
                case SATURDAY: case SUNDAY:
                    System.out.println("Weekends are best.");
                    break;
                            
                default:
                    System.out.println("Midweek days are so-so.");
                    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();
        }
    }
    
    
    The output is:
    
    Mondays are bad.
    Midweek days are so-so.
    Fridays are better.
    Weekends are best.
    Weekends are best.
    
    
  • Java programming language enum types are much more powerful than their counterparts in other languages.


  • The enum declaration defines a class (called an enum type).


  • The enum class body can include methods and other fields.


  • The compiler automatically adds some special methods when it creates an enum.


  • For example, they have a static values method that returns an array containing all of the values of the enum in the order they are declared.


  • This method is commonly used in combination with the for-each construct to iterate over the values of an enum type.


  • For example, this code from the example below iterates over all the days in the week and prints them.


  •  
    class Main {
      
        public static void main(String[] args) {
          public enum Day {
                SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
                THURSDAY, FRIDAY, SATURDAY 
            }
          for (Day p : Day.values()) {
             System.out.println("Your day is"+ p);
        }
        }
    }
    
    
  • Note: All enums implicitly extend java.lang.Enum.