Java Enum (enum)

Java enum ist eine spezielle Klasse, die im Allgemeinen eine Menge von Konstanten repräsentiert, wie die 4 Jahreszeiten eines Jahres, die 12 Monate eines Jahres, die 7 Tage einer Woche und Richtungen wie Osten, Süden, Westen, Norden usw.

Java-Enum-Klassen werden mit dem enum-Schlüsselwort definiert, wobei jede Konstante durch ein Komma getrennt wird,um sie zu trennen.

Definieren Sie zum Beispiel eine Enum-Klasse für Farben.

enum Color 
{ 
    RED, GREEN, BLUE; 
} 

Die obige Enum-Klasse Color hat die Farbkonstanten RED, GREEN, BLUE, die jeweils Rot, Grün und Blau repräsentieren.

Anwendungsbeispiel:

Beispiel

enum Color
{
    RED, GREEN, BLUE;
}
 
public class Test
{
    // Ausführen und das Ergebnis ausgeben
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

Das Ausführen des obigen Codes erzeugt die Ausgabe:

RED

Verwendung von Enums in inneren Klassen

Enum-Klassen können auch in inneren Klassen deklariert werden:

Beispiel

public class Test
{
    enum Color
    {
        RED, GREEN, BLUE;
    }
 
    // Ausführen und das Ergebnis ausgeben
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

Das Ausführen des obigen Codes erzeugt die Ausgabe:

RED

Jedes Enum wird intern durch Class implementiert, und alle Enum-Werte sind public static final.

Die obige Enum-Klasse Color wird in die folgende innere Klassenimplementierung umgewandelt:

class Color
{
     public static final Color RED = new Color();
     public static final Color BLUE = new Color();
     public static final Color GREEN = new Color();
}

Iterieren über Enum-Elemente

Sie können eine for-Anweisung verwenden, um über Enum-Elemente zu iterieren:

Beispiel

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

Das Ausführen des obigen Codes erzeugt die Ausgabe:

RED
GREEN
BLUE

Verwendung von Enum-Klassen in switch

Enum-Klassen werden oft in switch-Anweisungen verwendet:

Beispiel

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;

    switch(myVar) {
      case RED:
        System.out.println("Red");
        break;
      case GREEN:
         System.out.println("Green");
        break;
      case BLUE:
        System.out.println("Blue");
        break;
    }
  }
}

Das Ausführen des obigen Codes erzeugt die Ausgabe:

Blue

Methoden values(), ordinal() und valueOf()

Mit enum definierte Enum-Klassen erben standardmäßig von der Klasse java.lang.Enum und implementieren die Schnittstellen java.lang.Serializable und java.lang.Comparable.

Die Methoden values(), ordinal() und valueOf() befinden sich in der Klasse java.lang.Enum:

  • values() gibt alle Werte in der Enum-Klasse zurück.
  • Die Methode ordinal() kann den Index jeder Enum-Konstante ermitteln, genau wie ein Array-Index.
  • Die Methode valueOf() gibt die Enum-Konstante des angegebenen String-Werts zurück.

Beispiel

enum Color
{
    RED, GREEN, BLUE;
}
 
public class Test
{
    public static void main(String[] args)
    {
        // values() aufrufen
        Color[] arr = Color.values();
 
        // Über das Enum iterieren
        for (Color col : arr)
        {
            // Den Index anzeigen
            System.out.println(col + " bei Index " + col.ordinal());
        }
 
        // Verwende valueOf(), um eine Enum-Konstante zurückzugeben; eine IllegalArgumentException wird ausgelöst, wenn sie nicht existiert
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
    }
}

Das Ausführen des obigen Codes erzeugt die Ausgabe:

RED at index 0
GREEN at index 1
BLUE at index 2
RED

Member der Enum-Klasse

Wie normale Klassen können Enums eigene Variablen, Methoden und Konstruktoren haben. Konstruktoren dürfen nur den Zugriffsmodifizierer private verwenden, daher können sie nicht von außen aufgerufen werden.

Enums können sowohl konkrete Methoden als auch abstrakte Methoden enthalten. Wenn eine Enum-Klasse abstrakte Methoden hat, muss jede Instanz der Enum-Klasse sie implementieren.

Beispiel

enum Color
{
    RED, GREEN, BLUE;
 
    // Konstruktor
    private Color()
    {
        System.out.println("Constructor called for : " + this.toString());
    }
 
    public void colorInfo()
    {
        System.out.println("Universal Color");
    }
}
 
public class Test
{    
    // Ausgabe
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
        c1.colorInfo();
    }
}

Das Ausführen des obigen Codes erzeugt die Ausgabe:

Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color
Weitere Erweiterungen