En

Enums in Java

12 Übungen

Über Enums

Ein Enum-Typ ist ein spezieller Datentyp, mit dem eine Variable eine Menge vordefinierter Konstanten annehmen kann. Die Variable muss einem der Werte entsprechen, die für sie vordefiniert wurden. Häufige Beispiele sind Himmelsrichtungen (die Werte NORTH, SOUTH, EAST und WEST) und die Wochentage.

Weil sie Konstanten sind, werden die Namen der Felder eines Enum-Typs in Großbuchstaben geschrieben.

Definieren eines Enum-Typs

In der Programmiersprache Java definierst du einen Enum-Typ mit dem Schlüsselwort enum. Ein Enum-Typ für die Wochentage sieht zum Beispiel so aus:

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Du solltest Enum-Typen immer dann verwenden, wenn du eine feste Menge von Konstanten darstellen willst. Das gilt auch für natürliche Enum-Typen wie die Planeten unseres Sonnensystems und für Datenmengen, bei denen du zur Compile-Zeit alle möglichen Werte kennst, zum Beispiel die Einträge eines Menüs, Kommandozeilen-Flags und so weiter.

Einen Enum-Typ verwenden

Der folgende Code zeigt dir, wie du das oben definierte Enum DayOfWeek verwendest:

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Methoden und Felder hinzufügen

Enum-Typen in der Programmiersprache Java sind viel mächtiger als ihre Gegenstücke in anderen Sprachen. Die enum-Deklaration definiert eine Klasse (einen sogenannten Enum-Typ). Der Rumpf der Enum-Klasse kann Methoden und weitere Felder enthalten:

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

Der Aufruf der Methode getNumberOfStars auf einem Element des Enum-Typs Rating:

Rating.GOOD.getNumberOfStars();
// => 4

Eingebaute Methoden

Der Compiler fügt automatisch einige spezielle Methoden hinzu, wenn er ein Enum erstellt.

Zum Beispiel gibt es eine statische Methode values, die ein Array mit allen Werten des Enums in der Reihenfolge ihrer Deklaration zurückgibt:

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

Der obige Codeschnipsel würde Folgendes ausgeben:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

Der Compiler fügt außerdem eine statische Methode valueOf hinzu, die anhand des Namens ein Element des Enums zurückgibt:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Enums