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!

Java - Enums

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:

  1. Wir erstellen eine CoffeeSize-Variable mySize und setzen sie auf MITTEL.
  2. Wir geben die Beschreibung von mySize mit der getDescription()-Methode aus.
  3. Wir geben den Ordinalwert von MITTEL aus, der 1 ist (erinnere dich, dass Ordinalwerte bei 0 beginnen).
  4. Wir verwenden eine for-each-Schleife, um durch alle CoffeeSize-Werte zu iterieren und ihre Beschreibungen auszugeben.
  5. Schließlich verwenden wir valueOf(), um die GROSS-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