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:
Javaenum EnumName {
KONSTANTE1 KONSTANTE2 KONSTANTE3;
}
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.
Javaimport 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
Javaenum 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.
Javaenum 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.
Javaenum 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.
Javaimport 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.
Ganzzahl in Zeichenfolge umwandelnJava
/*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.