енум у Јави

У Јави енумерације (енумс) су посебан тип који се користи за дефинисање групе именованих константи.

  • Енумови помажу у читљивости одржавања и сигурности типова у програмима додељивањем смислених имена целобројним вредностима.
  • Углавном корисно када имамо мали скуп могућих вредности за ставку као што су упутства за дане у недељи итд.

Креирање енума

Синтакса:

енум ЕнумНаме {

ЦОНСТАНТ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  

Декларација енума у ​​Јави

Декларација енума може да се уради ван класе или унутар класе, али не и унутар методе.

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

Понављање енума користећи вредности()

Користите ЕнумТипе.валуес() за петљу кроз све енум константе.

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  

Енум и ЕнумСет (итерација специфичног опсега)

ЕнумСет.ранге() дозвољава итерацију преко одређеног опсега енум константи.

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  

Креирање класе са Енум чланом

Можемо комбиновати енуме са редовним часовима да организујемо логику вашег програма. Енум може бити променљива-члан у класи и методе могу да извршавају радње на основу вредности енума.

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  

Објашњење:

  • Класа ЕнумТест у горњем коду је креирана са чланом типа Даи. Има конструктор који узима Даи енум као аргумент и додељује га.
  • Класа има метод теллИтЛикеИтИс() који штампа поруку на основу вредности дана.
  • Главни метод укључује објекте ЕнумТест-а користећи различите вредности Даи енума и позивајући метод теллИтЛикеИтИс() за сваки.

НАПОМЕНА: Нова кључна реч се користи зато што је ЕнумТест обична класа, а не енум, па креирамо инстанце и прослеђујемо вредност набрајања њеном конструктору.