Aufzählung in Java

In Java sind Aufzählungen (Enums) ein spezieller Typ, der zum Definieren einer Gruppe benannter Konstanten verwendet wird.

  • Aufzählungen tragen zur Lesbarkeit, Wartbarkeit und Typsicherheit in Programmen bei, indem sie ganzzahligen Werten aussagekräftige Namen zuweisen.
  • Dies ist vor allem nützlich, wenn wir nur eine kleine Menge möglicher Werte für ein Element haben, z. B. Richtungen, Wochentage usw.

Erstellen einer Aufzählung

Syntax:

enum EnumName {

KONSTANTE1 KONSTANTE2 KONSTANTE3;

}

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

Ausgabe
RED  

Enum-Deklaration in Java

Die Enum-Deklaration kann außerhalb einer Klasse oder innerhalb einer Klasse erfolgen, jedoch nicht innerhalb einer Methode.

1. Deklaration außerhalb der Klasse

Wie wir im obigen Beispiel gesehen haben, können Aufzählungen außerhalb einer Klasse deklariert und direkt darauf zugegriffen werden

2. Deklaration innerhalb einer Klasse

Aufzählungen können auch innerhalb einer Klasse deklariert werden, jedoch nicht innerhalb einer Methode.

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

Ausgabe
RED  

Eigenschaften von Enum in Java

Es gibt bestimmte Eigenschaften, denen Enum folgt, wie unten erwähnt:

  • Klassentyp: Intern als Klasse implementiert.
  • Enum-Konstanten: Jede Konstante ist ein Objekt vom Typ enum.
  • Switch-Unterstützung: Kann in Switch-Anweisungen verwendet werden.
  • Implizite Modifikatoren: Konstanten sind öffentliche statische Endgültige.
  • Nachlass: Aufzählungen können keine Klassen erweitern, aber Schnittstellen implementieren.

Aufzählung in einer Switch-Anweisung

Aufzählungen können in Switch-Anweisungen verwendet werden, um verschiedene Fälle basierend auf den Aufzählungskonstanten zu behandeln.

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

Ausgabe
Other color  

Enum mit Methoden und Konstruktor

Bei Aufzählungen können Konstruktoren und Methoden für jede Konstante separat ausgeführt werden

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

Ausgabe
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED  

Enum mit abstrakten Methoden

Aufzählungen können abstrakte Methoden deklarieren, die jede Konstante implementieren muss.

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

Ausgabe
1st day 5th day  

Iterieren von Aufzählungen mithilfe von value()

Verwenden Sie EnumType.values(), um alle Enum-Konstanten zu durchlaufen.

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

Ausgabe
RED GREEN BLUE  

Enum und EnumSet (spezifische Bereichsiteration)

EnumSet.range() ermöglicht die Iteration über einen bestimmten Bereich von Enum-Konstanten.

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

Ausgabe
TUESDAY WEDNESDAY THURSDAY FRIDAY  

Erstellen einer Klasse mit einem Enum-Mitglied

Wir können Aufzählungen mit regulären Klassen kombinieren, um Ihre Programmlogik zu organisieren. Eine Aufzählung kann eine Mitgliedsvariable in einer Klasse sein und Methoden können Aktionen basierend auf dem Aufzählungswert ausführen.

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

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

Erläuterung:

  • Die EnumTest-Klasse im obigen Code wird mit einem Mitglied vom Typ Day erstellt. Es verfügt über einen Konstruktor, der die Day-Enumeration als Argument verwendet und zuweist.
  • Die Klasse verfügt über die Methode tellItLikeItIs(), die eine Nachricht basierend auf dem Wert des Tages druckt.
  • Die Hauptmethode umfasst Objekte von EnumTest, die unterschiedliche Day-Enumerationswerte verwenden und für jedes die Methode tellItLikeItIs() aufrufen.

NOTIZ: Das Schlüsselwort new wird verwendet, da EnumTest eine reguläre Klasse und keine Aufzählung ist. Daher erstellen wir Instanzen und übergeben den Aufzählungswert an ihren Konstruktor.