Java Enums meistern: Vollständiger Leitfaden zu Enums & Enum-Klassen
Java Enums
In diesem Tutorial lernen wir Enums in Java kennen. Wir lernen, Enums und Enum-Klassen mit Beispielen zu erstellen und zu verwenden.
In Java ist ein Enum (kurz für Enumeration) ein Typ, der eine feste Menge an konstanten Werten hat. Wir verwenden das enum-Schlüsselwort, um Enums zu deklarieren. Zum Beispiel:
enum Groesse { KLEIN, MITTEL, GROSS, EXTRAGROSS }
Hier haben wir ein Enum namens Groesse erstellt. Es enthält feste Werte KLEIN, MITTEL, GROSS und EXTRAGROSS.
Diese Werte innerhalb der Klammern heißen Enum-Konstanten (Werte).
Hinweis: Enum-Konstanten werden üblicherweise in Großbuchstaben dargestellt.
Beispiel 1: Java Enum
enum Groesse { KLEIN, MITTEL, GROSS, EXTRAGROSS } class Haupt { public static void main(String[] args) { System.out.println(Groesse.KLEIN); System.out.println(Groesse.MITTEL); } }
Ausgabe:
KLEIN MITTEL
Wie wir aus dem obigen Beispiel sehen, verwenden wir den Enum-Namen, um auf die konstanten Werte zuzugreifen.
Außerdem können wir Variablen von Enum-Typen erstellen. Zum Beispiel:
Groesse pizzaGroesse;
Hier ist pizzaGroesse eine Variable vom Groesse-Typ. Sie kann nur mit 4 Werten zugewiesen werden.
pizzaGroesse = Groesse.KLEIN; pizzaGroesse = Groesse.MITTEL; pizzaGroesse = Groesse.GROSS; pizzaGroesse = Groesse.EXTRAGROSS;
Beispiel 2: Java Enum mit der switch-Anweisung
enum Groesse { KLEIN, MITTEL, GROSS, EXTRAGROSS } class Test { Groesse pizzaGroesse; public Test(Groesse pizzaGroesse) { this.pizzaGroesse = pizzaGroesse; } public void pizzaBestellen() { switch(pizzaGroesse) { case KLEIN: System.out.println("Ich habe eine kleine Pizza bestellt."); break; case MITTEL: System.out.println("Ich habe eine mittlere Pizza bestellt."); break; default: System.out.println("Ich weiß nicht, welche ich bestellen soll."); break; } } } class Haupt { public static void main(String[] args) { Test t1 = new Test(Groesse.MITTEL); t1.pizzaBestellen(); } }
Ausgabe:
Ich habe eine mittlere Pizza bestellt.
Im obigen Programm haben wir einen Enum-Typ Groesse erstellt. Dann deklarierten wir eine Variable pizzaGroesse vom Groesse-Typ.
Hier kann die Variable pizzaGroesse nur mit 4 Werten zugewiesen werden (KLEIN, MITTEL, GROSS, EXTRAGROSS).
Beachten Sie die Anweisung:
Test t1 = new Test(Groesse.MITTEL);
Sie ruft den Test()-Konstruktor innerhalb der Test-Klasse auf. Jetzt wird die Variable pizzaGroesse mit der MITTEL-Konstante zugewiesen.
Basierend auf dem Wert wird einer der Fälle der switch-Anweisung ausgeführt.
Enum-Klasse in Java
In Java werden Enum-Typen als eine spezielle Art von Klasse betrachtet. Sie wurde mit Java 5 eingeführt.
Eine Enum-Klasse kann Methoden und Felder genau wie reguläre Klassen enthalten.
enum Groesse { konstante1, konstante2, …, konstanteN; // Methoden und Felder }
Wenn wir eine Enum-Klasse erstellen, erstellt der Compiler Instanzen (Objekte) jeder Enum-Konstanten. Auch ist jede Enum-Konstante standardmäßig public static final.
Beispiel 3: Java Enum-Klasse
enum Groesse{ KLEIN, MITTEL, GROSS, EXTRAGROSS; public String groesseAbrufen() { // this bezieht sich auf das Objekt KLEIN switch(this) { case KLEIN: return "klein"; case MITTEL: return "mittel"; case GROSS: return "groß"; case EXTRAGROSS: return "extragroß"; default: return null; } } public static void main(String[] args) { // groesseAbrufen() aufrufen // mit dem Objekt KLEIN System.out.println("Die Größe der Pizza ist " + Groesse.KLEIN.groesseAbrufen()); } }
Ausgabe:
Die Größe der Pizza ist klein
Im obigen Beispiel haben wir eine Enum-Klasse Groesse erstellt. Sie hat vier Konstanten KLEIN, MITTEL, GROSS und EXTRAGROSS.
Da Groesse eine Enum-Klasse ist, erstellt der Compiler automatisch Instanzen für jede Enum-Konstante.
Hier innerhalb der main()-Methode haben wir die Instanz KLEIN verwendet, um die groesseAbrufen()-Methode aufzurufen.
Hinweis: Wie reguläre Klassen kann eine Enum-Klasse auch Konstruktoren enthalten. Mehr dazu unter Java Enum-Konstruktor.
Methoden der Java Enum-Klasse
Es gibt einige vordefinierte Methoden in Enum-Klassen, die sofort einsatzbereit sind.
1. Java Enum ordinal()
Die ordinal()-Methode gibt die Position einer Enum-Konstante zurück. Zum Beispiel:
ordinal(KLEIN) // gibt 0 zurück
2. Enum compareTo()
Die compareTo()-Methode vergleicht Enum-Konstanten basierend auf ihrem Ordinalwert. Zum Beispiel:
Groesse.KLEIN.compareTo(Groesse.MITTEL) // gibt ordinal(KLEIN) - ordinal(MITTEL) zurück
3. Enum toString()
Die toString()-Methode gibt die String-Repräsentation der Enum-Konstanten zurück. Zum Beispiel:
KLEIN.toString() // gibt "KLEIN" zurück
4. Enum name()
Die name()-Methode gibt den definierten Namen einer Enum-Konstante in String-Form zurück. Der Rückgabewert der name()-Methode ist final. Zum Beispiel:
name(KLEIN) // gibt "KLEIN" zurück
5. Java Enum valueOf()
Die valueOf()-Methode nimmt einen String entgegen und gibt eine Enum-Konstante mit demselben Stringnamen zurück. Zum Beispiel:
Groesse.valueOf("KLEIN") // gibt Konstante KLEIN zurück.
6. Enum values()
Die values()-Methode gibt ein Array des Enum-Typs zurück, das alle Enum-Konstanten enthält. Zum Beispiel:
Groesse[] enumArray = Groesse.values();
Warum Java Enums?
In Java wurde Enum eingeführt, um die Verwendung von int-Konstanten zu ersetzen.
Angenommen, wir haben eine Sammlung von int-Konstanten verwendet.
class Groesse { public final static int KLEIN = 1; public final static int MITTEL = 2; public final static int GROSS = 3; public final static int EXTRAGROSS = 4; }
Hier entsteht das Problem, wenn wir die Konstanten ausgeben. Denn es wird nur die Zahl gedruckt, was nicht hilfreich sein könnte.
Statt int-Konstanten zu verwenden, können wir einfach Enums nutzen. Zum Beispiel:
enum Groesse { KLEIN, MITTEL, GROSS, EXTRAGROSS }
Dies macht unseren Code intuitiver.
Außerdem bietet Enum Compile-Zeit-Typsicherheit.
Wenn wir eine Variable vom Groesse-Typ deklarieren. Zum Beispiel:
Groesse groesse;
Hier ist garantiert, dass die Variable einen der vier Werte hält. Versuchen wir, Werte außer diesen vier zu übergeben, generiert der Compiler einen Fehler.
Java
- C-Enums meistern: Definition, Deklaration & Flag-Operationen
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Enums meistern: Vollständiger Leitfaden zu Enums & Enum-Klassen
- Java Enum-Konstruktoren erklärt mit praktischem Beispiel
- String-Repräsentationen in Java Enums meistern