English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Grund教程

Java Flow Control

Java Array

Java Object-Oriented (I)

Java Object-Oriented (II)

Java Object-Oriented (III)

Java Ausnahmebehandlung

Java List

Java Queue (Warteschlange)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

Andere Themen von Java

Java Enum (Enum)

In diesem Tutorial werden wir die Enums in Java lernen. Wir werden unter Verwendung von Beispielen die Erstellung und Verwendung von Enums und Enum-Klassen lernen.

In Java ist ein Enum ein Typ mit einem festen Satz möglicher Werte. Wir verwenden den enum-Schlüssel, um ein Enum zu deklarieren. Zum Beispiel:

enum Size { 
   KLEIN, MEDIUM, GRÜSS, ÜBERGRÖßEN 
}

Hier erstellen wir eine nach Size benannte Enum.

Die Werte innerhalb der Klammern werden als Enum-Werte (Konstanten) bezeichnet. Dies sind die einzigartigen Werte, die ein Enum-Typ beibehalten kann.

Beachten Sie:Enum-Konstanten werden normalerweise in Großbuchstaben dargestellt.

Lassen Sie uns ein einfaches Beispiel nennen.

enum Size {
   KLEIN, MEDIUM, GRÜSS, ÜBERGRÖßEN
}
class Main {
   public static void main(String[] args) {
      System.out.println(Size.SMALL);
      System.out.println(Size.MEDIUM);
   }
}

Ausgaberesultat

SMALL
MEDIUM

Aus dem obigen Beispiel kann man erkennen, dass wir Konstantenwerte durch Enum-Namen ansprechen.

Gleichzeitig können wir Variablen von Enum-Typen erstellen. Zum Beispiel,

Size pizzaSize;

Hier ist pizzaSize eine Variable des Typs Size. Sie kann nur4Werte.

pizzaSize = Size.SMALL;
pizzaSize = Size.MEDIUM;
pizzaSize = Size.LARGE;
pizzaSize = Size.EXTRALARGE;

Beispiel1:Java枚举

enum Size {
 KLEIN, MEDIUM, GRÜSS, ÜBERGRÖßEN
}
class Test {
 Size pizzaSize;
 public Test(Size pizzaSize) {
   this.pizzaSize = pizzaSize;
 }
 public void orderPizza() {
   switch(pizzaSize) {
     case SMALL:
       System.out.println("Ich habe einen kleinen Pizzabrot bestellt.");
       break;
     case MEDIUM:
       System.out.println("Ich habe eine mittlere Pizza bestellt.");
       break;
     default:
       System.out.println("Ich weiß nicht, welche ich bestellen soll.");
       break;
   }
 }
}
class Main {
 public static void main(String[] args) {
   Test t1 = new Test(Size.MEDIUM);
   t1.orderPizza();
 }
}

Ausgaberesultat

Ich habe eine mittlere Pizza bestellt.

In dem obigen Programm haben wir einen Enum-Typen Size erstellt. Dann haben wir eine Variable pizzaSize des Typs Size deklariert.

Die Variable pizzaSize kann nur4Werte (SMALL, MEDIUM, LARGE, EXTRALARGE).

Die Variable pizzaSize wurde der Konstante MEDIUM zugewiesen. Basierend darauf wird eine der Fälle des switch-case-Statements ausgegeben.

Java Enum-Klasse

In Java werden Enum-Typen als eine spezielle Art von Klasse betrachtet. Es ist in Java 5In der Version eingeführt.

Eine enum-Klasse kann wie eine reguläre Klasse Methoden und Felder enthalten.

enum Size {
    constant;1, constant;2, ..., constantN;
    //Methoden und Felder
}

枚举常量始终默认为public static final。

Wenn eine enum-Klasse erstellt wird, erstellt der Compiler auch Instanzen (Objekte) für jeden enum-Konstanten.

Beispiel2:枚举类

enum Size{
   SMALL, MEDIUM, LARGE, EXTRALARGE;
   public String getSize() {
      //Dies wird das Objekt SMALL referenzieren
      switch(this) {
         case SMALL:
          return "small";
         case MEDIUM:
          return "medium";
         case LARGE:
          return "large";
         case EXTRALARGE:
          return "extra large";
         default:
          return null;
      }
   }
   public static void main(String[] args) {
      //Die Methode getSize() wird mit dem Objekt SMALL aufgerufen
      System.out.println("Die Größe der Pizza ist ", + Size.SMALL.getSize());
   }
}

Ausgaberesultat

Die Größe der Pizza ist small

Im obigen Beispiel haben wir eine Enum-Klasse Size erstellt. Sie hat vier Konstanten SMALL, MEDIUM, LARGE und EXTRALARGE.

Da Size eine Enum-Klasse ist, erstellt der Compiler automatisch eine Instanz für jede Enum-Konstante.

Innerhalb des main()-Methodenblocks haben wir die Methode getSize() mit dem Beispielobjekt SMALL aufgerufen.

Wie reguläre Klassen können Enum-Klassen auch Konstruktoren enthalten. Weitere Informationen finden Sie unterJava Enum-Konstruktoren.

Methoden der Enum-Klasse

In der Enum-Klasse gibt es einige vorgegebene Methoden, die jederzeit verwendet werden können.

Die Methode ordinal()

Die Methode ordinal() gibt die Position der Enum-Konstanten zurück. Zum Beispiel:

ordinal(SMALL) 
//gibt 0 zurück

Die Methode compareTo()

Die Methode compareTo() vergleicht Enum-Konstanten basierend auf der Reihenfolge. Zum Beispiel:

Size.SMALL.compareTo(Size.MEDIUM)
 //gibt ordinal(SMALL) zurück - ordinal(MEDIUM)

Die Methode toString()

Die Methode toString() gibt die Zeichenkette der Enum-Konstanten zurück. Zum Beispiel:

SMALL.toString()
//gibt "SMALL" zurück

Die Methode name()

Die Methode name() gibt den definierten Namen der Enum-Konstanten als String zurück. Der Wert der name()-Methode ist final. Zum Beispiel:

name(SMALL)
//gibt "SMALL" zurück

Die Methode valueOf()

Die Methode valueOf() nimmt einen String an und gibt die Enum-Konstante mit dem gleichen String-Namen zurück. Zum Beispiel:

Size.valueOf("SMALL")
//gibt die Konstante SMALL zurück

Die Methode values()

Die Methode values() gibt ein Array vom Typ Enum zurück, das alle Enum-Konstanten enthält. Zum Beispiel:

Size[] enumArray = Size.value();

Warum wird Java-Enum verwendet?

In Java wurde enum eingeführt, um die Verwendung von int-Konstanten zu ersetzen.

Angenommen, wir verwenden eine Sammlung von int-Konstanten.

class Size {
   public final static int KLEIN = 1;
   public final static int MEDIUM = 2;
   public final static int GRÜSS = 3;
   public final static int ÜBERGRÖßEN = 4;
}

 Hier tritt ein Problem auf, wenn wir die Konstanten ausdrucken. Dies liegt daran, dass nur Zahlen gedruckt werden, was möglicherweise nicht hilfreich ist.

Dadurch können wir einfach Enums verwenden, anstatt int-Konstanten. Zum Beispiel,

enum Size {
   KLEIN, MEDIUM, GRÜSS, ÜBERGRÖßEN
}

Das macht unseren Code übersichtlicher.

Auch bieten Enum-Klassen Sicherheit beim Kompilieren.

Wenn wir eine Variable des Typs Size (wie im obigen Beispiel) deklarieren, können wir sicherstellen, dass diese Variable einen der vier Werte enthält. Versuchen wir, einen anderen Wert zu übergeben, wird der Compiler einen Fehler auswerfen.