enum Java kalba

Java kalboje sąrašai (enums) yra specialus tipas, naudojamas apibrėžti pavadintų konstantų grupę.

  • Skaičių reikšmėms priskirdami prasmingus pavadinimus, padeda išlaikyti skaitomumą ir saugoti programų tipą.
  • Daugiausia naudinga, kai turime nedidelį galimų elemento verčių rinkinį, pvz., nuorodų savaitės dienas ir pan.

Enum kūrimas

Sintaksė:

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

Išvestis
RED  

Enum deklaracija Java kalba

Enum deklaravimas gali būti atliktas klasėje arba klasėje, bet ne metodo viduje.

1. Deklaracija ne klasėje

Kaip matėme aukščiau esančiame pavyzdyje, sąrašus galima deklaruoti už klasės ribų ir pasiekti tiesiogiai

2. Deklaracija klasės viduje

Enums taip pat galima deklaruoti klasėje, bet ne metodo viduje.

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

Išvestis
RED  

„Enum“ savybės „Java“.

Yra tam tikros savybės, po kurių nurodomas Enum, kaip nurodyta toliau:

  • Klasės tipas: Viduje įdiegta kaip klasė.
  • Enum konstantos: Kiekviena konstanta yra enum tipo objektas.
  • Perjungimo palaikymas: Gali būti naudojamas perjungimo teiginiuose.
  • Netiesioginiai modifikatoriai: Konstantos yra viešos statinės galutinės.
  • Paveldėjimas: Enums negali išplėsti klasių, bet gali įdiegti sąsajas.

Enum perjungimo pareiškime

Enums galima naudoti perjungimo sakiniuose, kad būtų galima tvarkyti įvairius atvejus, remiantis enum konstantomis.

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

Išvestis
Other color  

Enum su metodais ir konstruktoriumi

Enums gali turėti konstruktorius ir metodus, vykdomus atskirai kiekvienai konstantai

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

Išvestis
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED  

Enum su abstrakčiais metodais

Enums gali deklaruoti abstrakčius metodus, kuriuos turi įgyvendinti kiekviena konstanta.

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

Išvestis
1st day 5th day  

Eilių kartojimas naudojant reikšmes ()

Naudokite EnumType.values(), kad peržiūrėtumėte visas enum konstantas.

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

Išvestis
RED GREEN BLUE  

Enum ir EnumSet (specifinio diapazono iteracija)

EnumSet.range() leidžia kartoti tam tikrą enum konstantų diapazoną.

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

Išvestis
TUESDAY WEDNESDAY THURSDAY FRIDAY  

Klasės su Enum nariu kūrimas

Mes galime derinti enumus su įprastomis pamokomis, kad sutvarkytume jūsų programos logiką. Enum gali būti narys klasės kintamasis, o metodai gali atlikti veiksmus, pagrįstus enum reikšme.

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

Išvestis
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest  

Paaiškinimas:

  • Aukščiau pateiktame kode EnumTest klasė sukurta su Day tipo nariu. Jis turi konstruktorių, kuris paima Day enum kaip argumentą ir jį priskiria.
  • Klasė turi metodą tellItLikeItIs(), kuris spausdina pranešimą pagal dienos vertę.
  • Pagrindinis metodas apima EnumTest objektus, naudojant skirtingas Day enum reikšmes ir kiekviename iškviečiant tellItLikeItIs() metodą.

PASTABA: Naujas raktinis žodis naudojamas, nes EnumTest yra įprasta klasė, o ne enum, todėl mes sukuriame egzempliorius ir perduodame enum reikšmę jos konstruktoriui.