In Java, Aufzählungen oder Java Enum dienen dazu, eine Gruppe benannter Konstanten in einer Programmiersprache darzustellen. Java-Enums werden verwendet, wenn wir alle möglichen Werte zur Kompilierungszeit kennen, wie z. B. Auswahlmöglichkeiten in einem Menü, Rundungsmodi, Befehlszeilenflags usw. Der Satz von Konstanten in einem Enum-Typ muss nicht für immer fest bleiben.
Was ist Enumeration oder Enum in Java?
Eine Java-Enumeration ist ein Klassentyp. Obwohl wir keine Enumeration mit instanziieren müssen neu, Es verfügt über die gleichen Fähigkeiten wie andere Klassen. Diese Tatsache macht die Java-Enumeration zu einem sehr leistungsfähigen Werkzeug. Genau wie Klassen können Sie ihnen Konstruktoren geben, Instanzvariablen und -methoden hinzufügen und sogar Schnittstellen implementieren.
Enum-Beispiel:
Die 4 Farben in einem Spielkartenspiel können aus 4 Aufzählungszeichen bestehen, die „Kreuz“, „Karo“, „Herz“ und „Pik“ heißen und zu einem Aufzählungstyp namens „Farbe“ gehören. Weitere Beispiele sind natürliche Aufzählungstypen (wie Planeten, Wochentage, Farben, Richtungen usw.).
Beachten Sie, dass Aufzählungen im Gegensatz zu Klassen weder andere Klassen erben noch erweitert werden können (d. h. zur Superklasse werden). Wir können ihm auch Variablen, Methoden und Konstruktoren hinzufügen. Das Hauptziel einer Enumeration besteht darin, unsere eigenen Datentypen (Enumerated Data Types) zu definieren.
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
Java
// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Ausgabe
RED>
2. Deklaration innerhalb einer Klasse
Java
vikas divyakirti
// enum declaration inside a class.> 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>
- Die erste Zeile innerhalb der Aufzählung sollte eine Liste von Konstanten sein und dann andere Dinge wie Methoden, Variablen und Konstruktoren.
- Entsprechend Java-Namenskonventionen , wird empfohlen, Konstanten ausschließlich in Großbuchstaben zu benennen
Eigenschaften von Enum in Java
Es gibt bestimmte Eigenschaften, denen Enum folgt, wie unten erwähnt:
- Jede Aufzählung wird intern mithilfe von Class implementiert.
- Jede Enum-Konstante stellt eine dar Objekt vom Typ enum.
- Der Enum-Typ kann als Argument an übergeben werden schalten Aussagen.
- Jede Enum-Konstante ist immer implizit öffentliches statisches Finale . Seit es ist statisch , wir können darauf zugreifen, indem wir den Enum-Namen verwenden. Seit es ist Finale , können wir keine untergeordneten Aufzählungen erstellen.
- Wir können das erklären main()-Methode innerhalb der Aufzählung. Daher können wir die Aufzählung direkt über die Eingabeaufforderung aufrufen.
Nachfolgend finden Sie die Implementierung der oben genannten Eigenschaften:
Java
// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }> |
>
>
Sternenmuster druckenAusgabe
Mondays are bad.>
Java Enum-Programme
1. Hauptfunktion innerhalb von Enum
Wir können eine Hauptfunktion innerhalb einer Aufzählung deklarieren, da wir die Aufzählung direkt über die Eingabeaufforderung aufrufen können.
Nachfolgend finden Sie die Implementierung der oben genannten Eigenschaft:
Java
// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Ausgabe
RED>
2. Durchlaufen Sie Enum
Wir können die Enum mithilfe von value( ) und einer Schleife durchlaufen. Die Funktion „values()“ gibt ein Array von Enum-Werten als Konstanten zurück, mit denen wir über die Werte iterieren können.
Unten ist die Implementierung der Schleife durch Enum:
Java
// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }> |
>
>Ausgabe
RED GREEN BLUE>
3. Enum in einer Switch-Anweisung
Java
// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >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 observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }> |
>
>
Zeichenfolgenwert vonAusgabe
Other color observed>
Aufzählung und Vererbung
- Alle Aufzählungen werden implizit erweitert java.lang.Enum-Klasse . Als Klasse kann man sich nur erweitern eins Als übergeordnetes Element in Java kann eine Enumeration nichts anderes erweitern.
- toString()-Methode wird überschrieben java.lang.Enum-Klasse , was den Namen der Enum-Konstante zurückgibt.
- enum kann viele Schnittstellen implementieren.
Enum und Konstruktor
- Enum kann einen Konstruktor enthalten und wird zum Zeitpunkt des Ladens der Enum-Klasse für jede Enum-Konstante separat ausgeführt.
- Wir können Enum-Objekte nicht explizit erstellen und daher den Enum-Konstruktor nicht direkt aufrufen.
Aufzählung und Methoden
Enum kann beides enthalten Beton Methoden und abstrakt Methoden. Wenn eine Enum-Klasse über eine abstrakte Methode verfügt, muss jede Instanz der Enum-Klasse diese implementieren.
Java
// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }> |
>
>Ausgabe
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
FAQs zu Enum in Java
Q1. Können wir die Instanz von Enum mit dem neuen Schlüsselwort erstellen?
Jahre:
Nein, wir können die Instanz des Enum-Schlüsselworts nicht erstellen, da es nur private Konstruktoren enthält.
Q2. Können wir eine abstrakte Methode im Enum haben?
Jahre:
Ja, wir haben eine abstrakte Methode in Enum.
Q3. Was ist der Zweck der Methode „values()“ in der Aufzählung?
Jahre:
In Java kann die Methode „values( )“ verwendet werden, um alle in der Aufzählung vorhandenen Werte zurückzugeben.
Q4. Was ist der Zweck der valueOf()-Methode in der Aufzählung?
Jahre:
Die Methode valueOf() gibt die Enum-Konstante des angegebenen String-Werts zurück, sofern vorhanden.
F5. Was ist der Zweck der ordinal()-Methode in der Aufzählung?
Jahre:
Mit der Methode ordinal() kann jeder Enum-Konstantenindex genau wie ein Array-Index gefunden werden.
F6. Schreiben Sie ein Programm in Java, um die Verwendung der Methoden „values()“, „valueOf()“ und „ordinal()“ in der Aufzählung zu beschreiben.
Jahre:
AusgabeJava
// Java program to demonstrate working of values(),>// ordinal() and valueOf()>enum>Color {>>RED,>>GREEN,>>BLUE;>}>public>class>Test {>>public>static>void>main(String[] args)>>{>>// Calling values()>>Color arr[] = Color.values();>>// enum with loop>>for>(Color col : arr) {>>// Calling ordinal() to find index>>// of color.>>System.out.println(col +>' at index '>>+ col.ordinal());>>}>>// Using valueOf(). Returns an object of>>// Color with given constant.>>// Uncommenting second line causes exception>>// IllegalArgumentException>>System.out.println(Color.valueOf(>'RED'>));>>// System.out.println(Color.valueOf('WHITE'));>>}>}>>Java-Array initialisieren>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Nächster Artikel zu enum: Aufzählung mit benutzerdefiniertem Wert in Java