Java - Enums: Ein Leitfaden für Anfänger
Hallo dort, aufstrebende Java-Programmierer! Heute werden wir in die faszinierende Welt der Java-Enums eintauchen. Keine Sorge, wenn du noch nie von ihnen gehört hast – am Ende dieses Tutorials wirst du ein Enum-Experte sein! Also, nimm dir einen Tassen deines Lieblingsgetränks und lasst uns anfangen!
Einführung in Enums
Bist du jemals in einer Situation gewesen, in der du in deinem Code eine feste Menge von Konstanten darstellen musstest? Vielleicht hast du ein Programm für eine Kaffeetante geschaffen und verschiedene Größen von Kaffeetassen darstellen müssen. Oder vielleicht hast du ein Spiel gebaut und verschiedene Richtungen angeben müssen, in die ein Charakter sich bewegen kann. Hier kommt Enums zu Hilfe!
Eine Enum, kurz für "enumeration", ist eine spezielle Art von Klasse in Java, die eine Gruppe von Konstanten (unveränderliche Variablen, wie final Variablen) darstellt. Stelle dir das als eine elegante Art vor, eine Menge vordefinierter Werte zu erstellen, die sich nicht ändern.
Klassendeklaration
Lassen Sie uns damit beginnen, wie wir eine Enum deklarieren. Die Syntax ist ziemlich einfach:
enum CoffeeSize {
KLEIN,
MITTEL,
GROSS
}
In diesem Beispiel haben wir eine Enum namens CoffeeSize
mit drei Konstanten erstellt: KLEIN, MITTEL und GROSS. Beachte, wie wir das Schlüsselwort enum
anstelle von class
verwenden und wie jede Konstante durch ein Komma getrennt ist.
Klassenkonstruktoren
Enums können Konstruktoren haben, genau wie reguläre Klassen. Dies ermöglicht es uns, zusätzliche Daten mit jeder Enum-Konstante zu verknüpfen. Erweitern wir unser CoffeeSize
-Beispiel:
enum CoffeeSize {
KLEIN(8),
MITTEL(12),
GROSS(16);
private final int ounces;
CoffeeSize(int ounces) {
this.ounces = ounces;
}
public int getOunces() {
return ounces;
}
}
In dieser aktualisierten Version haben wir einen Konstruktor hinzugefügt, der einen int
-Parameter nimmt, der die Anzahl der Unzen für jede Größe darstellt. Wir haben auch ein privates Feld ounces
und eine Getter-Methode getOunces()
hinzugefügt.
Klassenmethoden
Enums können wie reguläre Klassen Methoden haben. Fügen wir eine Methode zu unserer CoffeeSize
-Enum hinzu:
enum CoffeeSize {
KLEIN(8),
MITTEL(12),
GROSS(16);
private final int ounces;
CoffeeSize(int ounces) {
this.ounces = ounces;
}
public int getOunces() {
return ounces;
}
public String getDescription() {
return this.name() + " Kaffee (" + this.ounces + " oz)";
}
}
Wir haben eine getDescription()
-Methode hinzugefügt, die eine Zeichenkette zurückgibt, die die Größe des Kaffees beschreibt. Die name()
-Methode wird von der Enum
-Klasse geerbt und gibt den Namen der Konstanten als Zeichenkette zurück.
Vererbte Methoden
Alle Enums erben implizit von java.lang.Enum
. Das bedeutet, sie kommen mit einigen eingebauten Methoden. Hier sind einige der am häufigsten verwendeten:
Methode | Beschreibung |
---|---|
name() |
Gibt den Namen der Enum-Konstante zurück |
ordinal() |
Gibt die Position der Enum-Konstante (0-basiert) zurück |
valueOf(String name) |
Gibt die Enum-Konstante mit dem angegebenen Namen zurück |
values() |
Gibt ein Array zurück, das alle Enum-Konstanten enthält |
Beispiel
Jetzt lassen uns alles in einem vollständigen Beispiel zusammenführen:
public class CoffeeShop {
public static void main(String[] args) {
CoffeeSize mySize = CoffeeSize.MITTEL;
System.out.println("Ich habe einen " + mySize.getDescription() + " bestellt.");
System.out.println("Diese Größe hat einen Ordinalwert von: " + mySize.ordinal());
System.out.println("\nAlle verfügbaren Größen:");
for (CoffeeSize size : CoffeeSize.values()) {
System.out.println(size.getDescription());
}
// Verwenden von valueOf
CoffeeSize anotherSize = CoffeeSize.valueOf("GROSS");
System.out.println("\nVerwenden von valueOf: " + anotherSize.getDescription());
}
}
enum CoffeeSize {
KLEIN(8),
MITTEL(12),
GROSS(16);
private final int ounces;
CoffeeSize(int ounces) {
this.ounces = ounces;
}
public int getOunces() {
return ounces;
}
public String getDescription() {
return this.name() + " Kaffee (" + this.ounces + " oz)";
}
}
Ausgabe
Wenn du dieses Programm ausführst, wirst du die folgende Ausgabe sehen:
Ich habe einen MITTEL Kaffee (12 oz) bestellt.
Diese Größe hat einen Ordinalwert von: 1
Alle verfügbaren Größen:
KLEIN Kaffee (8 oz)
MITTEL Kaffee (12 oz)
GROSS Kaffee (16 oz)
Verwenden von valueOf: GROSS Kaffee (16 oz)
Lassen uns aufbrechen, was in diesem Beispiel passiert:
- Wir erstellen eine
CoffeeSize
-VariablemySize
und setzen sie aufMITTEL
. - Wir geben die Beschreibung von
mySize
mit dergetDescription()
-Methode aus. - Wir geben den Ordinalwert von
MITTEL
aus, der 1 ist (erinnere dich, dass Ordinalwerte bei 0 beginnen). - Wir verwenden eine for-each-Schleife, um durch alle
CoffeeSize
-Werte zu iterieren und ihre Beschreibungen auszugeben. - Schließlich verwenden wir
valueOf()
, um dieGROSS
-Enum-Konstante durch ihren Namen zu erhalten.
Und so ist es! Du hast gerade deine ersten Schritte in die Welt der Java-Enums gemacht. Sie sind ein leistungsfähiges Werkzeug zur Darstellung fester Mengen von Konstanten auf eine typesichere Weise.
Denke daran, Enums sind mehr als nur verklärte Konstanten. Sie können Konstruktoren, Felder und Methoden haben und sind daher unglaublich vielseitig. Sie sind perfekt geeignet, Dinge wie Wochentage, Kartenfarben, Pizzaschlitze oder andere feste Werte in deinen Programmen darzustellen.
Wenn du deinen Java-Weg fortsetzt, wirst du viele weitere Anwendungen für Enums finden. Sie sind ein grundlegender Bestandteil der Java-Sprache, und das Meistern davon wird dich zu einem effektiveren und effizienteren Programmierer machen.
Weiter üben, weiter coden und vor allem genieße den Prozess des Lernens. Bevor du es weißt, schreibst du komplexe Java-Programme mit Leichtigkeit. Frohes Coden!
Credits: Image by storyset