logo

Java-Aufzählungen

Der Aufzählung in Java ist ein Datentyp, der einen festen Satz von Konstanten enthält.

Es kann für Wochentage (SONNTAG, MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG und SAMSTAG), Richtungen (NORD, SÜD, OST und WEST), Jahreszeit (FRÜHLING, SOMMER, WINTER und HERBST oder HERBST) verwendet werden ), Farben (ROT, GELB, BLAU, GRÜN, WEISS und SCHWARZ) usw. Gemäß den Java-Namenskonventionen sollten wir alle Konstanten in Großbuchstaben schreiben. Wir haben also Enum-Konstanten in Großbuchstaben.

Java-Enums kann man sich als Klassen vorstellen, die über einen festen Satz von Konstanten verfügen (eine Variable, die sich nicht ändert). Die Java-Enum-Konstanten sind statisch und implizit final. Es ist seit JDK 1.5 verfügbar.

Java-Nullprüfung

Aufzählungen werden verwendet, um unseren eigenen Datentyp wie Klassen zu erstellen. Der Aufzählung Der Datentyp (auch als Enumerated Data Type bekannt) wird zum Definieren einer Enumeration in Java verwendet. Im Gegensatz zu C/C++ gibt es in Java mehr Enum mächtig . Hier können wir eine Aufzählung entweder innerhalb der Klasse oder außerhalb der Klasse definieren.

Java Enum erbt intern die Enum-Klasse , kann also keine andere Klasse erben, kann aber viele Schnittstellen implementieren. Wir können Felder, Konstruktoren, Methoden und Hauptmethoden in der Java-Enumeration haben.

Wichtige Punkte für Java Enum

  • Enum verbessert die Typsicherheit
  • Enum kann problemlos im Switch verwendet werden
  • Enum kann durchlaufen werden
  • Enum kann Felder, Konstruktoren und Methoden haben
  • Enum implementiert möglicherweise viele Schnittstellen, kann jedoch keine Klasse erweitern, da es die Enum-Klasse intern erweitert
Java-Enum-Punkte

Einfaches Beispiel für Java Enum

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Testen Sie es jetzt

Ausgabe:

 WINTER SPRING SUMMER FALL 

Sehen wir uns ein weiteres Beispiel einer Java-Enumeration an, bei der wir die Methoden value(), valueOf() und ordinal() der Java-Enumeration verwenden.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Ausgabe:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Hinweis: Der Java-Compiler fügt zur Kompilierungszeit intern die Methoden „values()“, „valueOf()“ und „ordinal()“ innerhalb der Aufzählung hinzu. Es erstellt intern eine statische und endgültige Klasse für die Aufzählung.

Was ist der Zweck der Methode „values()“ in der Aufzählung?

Der Java-Compiler fügt intern die Methode „values()“ hinzu, wenn er eine Aufzählung erstellt. Die Methode „values()“ gibt ein Array zurück, das alle Werte der Aufzählung enthält.

Was ist der Zweck der valueOf()-Methode in der Aufzählung?

Der Java-Compiler fügt intern die Methode valueOf() hinzu, wenn er eine Aufzählung erstellt. Die Methode valueOf() gibt den Wert einer bestimmten Konstantenaufzählung zurück.

Was ist der Zweck der ordinal()-Methode in der Aufzählung?

Der Java-Compiler fügt intern die Methode ordinal() hinzu, wenn er eine Aufzählung erstellt. Die Methode ordinal() gibt den Index des Enum-Werts zurück.


Definieren von Java Enum

Die Aufzählung kann innerhalb oder außerhalb der Klasse definiert werden, da sie einer Klasse ähnelt. Das Semikolon (;) am Ende der Enumerationskonstanten ist optional. Zum Beispiel:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

Oder,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Beide Definitionen von Java enum sind gleich.

nicht

Java-Enum-Beispiel: Außerhalb der Klasse definiert

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Testen Sie es jetzt

Ausgabe:

 WINTER 

Java-Enum-Beispiel: Innerhalb der Klasse definiert

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Testen Sie es jetzt

Ausgabe:

 WINTER 

Java Enum-Beispiel: Hauptmethode in Enum

Wenn Sie die Methode main() in die Aufzählung einfügen, können Sie die Aufzählung direkt ausführen.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Ausgabe:

Kathodenstrahlröhrenmonitor
 WINTER 

Initialisieren bestimmter Werte für die Enum-Konstanten

Die Enum-Konstanten haben einen Anfangswert, der bei 0, 1, 2, 3 usw. beginnt. Wir können jedoch den spezifischen Wert für die Enum-Konstanten initialisieren, indem wir Felder und Konstruktoren definieren. Wie bereits erwähnt, kann Enum Felder, Konstruktoren und Methoden haben.

Beispiel für die Angabe des Anfangswerts für die Enumerationskonstanten

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Testen Sie es jetzt

Ausgabe:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Der Konstruktor des Enum-Typs ist privat. Wenn Sie keinen privaten Compiler deklarieren, erstellt er intern einen privaten Konstruktor.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Vom Compiler generierter interner Code für das obige Beispiel des Enum-Typs

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Können wir die Instanz von Enum mit einem neuen Schlüsselwort erstellen?

Nein, da es nur private Konstruktoren enthält.

Können wir eine abstrakte Methode im Enum haben?

Ja natürlich! Wir können abstrakte Methoden haben und die Implementierung dieser Methoden bereitstellen.


Java Enum in einer Switch-Anweisung

Wir können enum auf die switch-Anweisung wie im gegebenen Beispiel anwenden:

Beispiel für die Anwendung von Enum auf eine Switch-Anweisung

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Testen Sie es jetzt

Ausgabe:

 monday