자바의 열거형

Java에서 열거형(enums)은 명명된 상수 그룹을 정의하는 데 사용되는 특수 유형입니다.

  • 열거형은 정수 값에 의미 있는 이름을 할당하여 프로그램의 가독성 유지 관리 및 유형 안전성에 도움이 됩니다.
  • 길찾기 요일 등과 같은 항목에 대해 가능한 값이 작은 경우 주로 유용합니다.

열거형 만들기

통사론:

열거형 EnumName {

상수1 상수2 상수3;

}

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

산출
RED  

Java에서 열거형 선언

Enum 선언은 클래스 외부나 클래스 내부에서 수행할 수 있지만 메서드 내부에서는 수행할 수 없습니다.

1. 클래스 외부 선언

위의 예제에서 보았듯이 열거형은 클래스 외부에서 선언되고 직접 액세스될 수 있습니다.

2. 클래스 내부 선언

열거형은 클래스 내부에서 선언할 수도 있지만 메서드 내부에서는 선언할 수 없습니다.

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

산출
RED  

Java의 Enum 속성

아래에 언급된 것처럼 Enum 뒤에는 특정 속성이 있습니다.

  • 수업 유형: 내부적으로 클래스로 구현됩니다.
  • 열거형 상수: 각 상수는 enum 유형의 객체입니다.
  • 스위치 지원: 스위치 문에서 사용할 수 있습니다.
  • 암시적 수정자: 상수는 공개 정적 최종입니다.
  • 계승: 열거형은 클래스를 확장할 수 없지만 인터페이스를 구현할 수 있습니다.

Switch 문의 열거형

열거형은 열거형 상수에 따라 다양한 사례를 처리하기 위해 스위치 문에서 사용할 수 있습니다.

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

산출
Other color  

메서드와 생성자가 포함된 열거형

열거형에는 각 상수에 대해 별도로 실행되는 생성자와 메서드가 있을 수 있습니다.

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

산출
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED  

추상 메서드가 포함된 열거형

열거형은 각 상수가 구현해야 하는 추상 메서드를 선언할 수 있습니다.

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

산출
1st day 5th day  

value()를 사용하여 열거형 반복

모든 열거형 상수를 반복하려면 EnumType.values()를 사용하세요.

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

산출
RED GREEN BLUE  

Enum 및 EnumSet(특정 범위 반복)

EnumSet.range()를 사용하면 열거형 상수의 특정 범위에 대한 반복이 가능합니다.

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

산출
TUESDAY WEDNESDAY THURSDAY FRIDAY  

Enum 멤버를 사용하여 클래스 만들기

열거형을 일반 클래스와 결합하여 프로그램 논리를 구성할 수 있습니다. 열거형은 클래스의 멤버 변수일 수 있으며 메서드는 열거형 값을 기반으로 작업을 수행할 수 있습니다.

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

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

설명:

  • 위 코드의 EnumTest 클래스는 Day 유형의 멤버로 생성됩니다. Day enum을 인수로 사용하여 할당하는 생성자가 있습니다.
  • 클래스에는 일 값을 기반으로 메시지를 인쇄하는 TellItLikeItIs() 메소드가 있습니다.
  • 기본 메소드에는 다양한 Day 열거형 값을 사용하고 각각에 대해 TellItLikeItIs() 메소드를 호출하는 EnumTest의 객체가 포함되어 있습니다.

메모: EnumTest는 열거형이 아닌 일반 클래스이므로 new 키워드가 사용되므로 인스턴스를 만들고 열거형 값을 해당 생성자에 전달합니다.