enum Javassa

Javassa luettelot (enums) ovat erityinen tyyppi, jota käytetään määrittelemään ryhmä nimettyjä vakioita.

  • Enumit auttavat ohjelmien luettavuuden ylläpidossa ja tyyppiturvassa antamalla merkityksellisiä nimiä kokonaislukuarvoille.
  • Hyödyllinen lähinnä silloin, kun meillä on pieni joukko mahdollisia arvoja tuotteelle, kuten reittiohjeet viikonpäivät jne.

Enumin luominen

Syntaksi:

enum EnumName {

VAKIO1 VAKIO2 VAKIO3;

}

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

Lähtö
RED  

Enum-ilmoitus Javassa

Enum-ilmoitus voidaan tehdä luokan ulkopuolella tai luokan sisällä, mutta ei metodin sisällä.

1. Ilmoitus luokan ulkopuolella

Kuten yllä olevassa esimerkissä olemme nähneet, enumeita voidaan ilmoittaa luokan ulkopuolella ja niihin pääsee suoraan

2. Ilmoitus luokan sisällä

Enumeja voidaan ilmoittaa myös luokan sisällä, mutta ei metodin sisällä.

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

Lähtö
RED  

Enumin ominaisuudet Javassa

On tiettyjä ominaisuuksia, joita seuraa Enum, kuten alla mainitaan:

  • Luokan tyyppi: Sisäisesti toteutettu luokkana.
  • Enum-vakiot: Jokainen vakio on enum-tyyppinen objekti.
  • Vaihda tuki: Voidaan käyttää kytkinlauseissa.
  • Implisiittiset muuntajat: Vakiot ovat julkisia staattisia lopullisia.
  • Perintö: Enumit eivät voi laajentaa luokkia, mutta voivat toteuttaa rajapintoja.

Enum Switch-lausunnossa

Enumeja voidaan käyttää kytkinkäskyissä käsittelemään erilaisia ​​tapauksia enum-vakioiden perusteella.

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

Lähtö
Other color  

Enum menetelmillä ja rakentajalla

Enumeissa voi olla konstruktorit ja menetelmät, jotka suoritetaan erikseen kullekin vakiolle

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

Lähtö
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED  

Enum abstrakteilla menetelmillä

Enums voi ilmoittaa abstrakteja menetelmiä, jotka jokaisen vakion on toteutettava.

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

Lähtö
1st day 5th day  

Enumeiden iterointi arvoilla()

Käytä EnumType.values()-komentoa kaikkien enum-vakioiden läpikäymiseen.

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

Lähtö
RED GREEN BLUE  

Enum ja EnumSet (erityisen alueen iteraatio)

EnumSet.range() sallii iteroinnin tietyllä enum-vakioiden alueella.

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

Lähtö
TUESDAY WEDNESDAY THURSDAY FRIDAY  

Luokan luominen Enum-jäsenen kanssa

Voimme yhdistää enumeja tavallisiin luokkiin järjestääksemme ohjelmalogiikkasi. Enum voi olla luokan jäsenmuuttuja ja menetelmät voivat suorittaa toimintoja enum-arvon perusteella.

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

Lähtö
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest  

Selitys:

  • Yllä olevan koodin EnumTest-luokka luodaan Day-tyypin jäsenellä. Siinä on konstruktori, joka ottaa Day enum -arvon argumenttina ja määrittää sen.
  • Luokassa on metodi tellItLikeItIs(), joka tulostaa viestin päivän arvon perusteella.
  • Päämenetelmä sisältää EnumTest-objekteja, jotka käyttävät eri Day enum -arvoja ja kutsuvat tellItLikeItIs() -metodia jokaisessa.

HUOMAA: Uutta avainsanaa käytetään, koska EnumTest on tavallinen luokka, ei enum, joten luomme esiintymiä ja välitämme enum-arvon sen rakentajalle.