Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten mit Enum in Java | Erweiterte Java-Funktionen und -Techniken
Java Datenstrukturen

bookArbeiten mit Enum in Java

Kommen wir nun zu einer sehr interessanten und vor allem besonderen Datenstruktur – dem enum.

Betrachten wir die Erstellung eines enum. Die Erstellung eines enum unterscheidet sich deutlich von anderen Datenstrukturen, da sie auf Klassenebene erfolgt:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Praktische Anwendung

Enum wird benötigt, damit Sie einfach auf die Konstante verweisen können. Da es sich um eine Liste von Konstanten handelt, greifen Sie folgendermaßen darauf zu:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Hier greifen wir einfach auf die enum-Konstante zu, um zu verstehen, welcher Tag heute ist. Anstatt viele verschiedene Konstanten zu erstellen, speichern wir einfach ein Array von Konstanten im enum. Das ist bequem und sehr praktisch. Zum Beispiel hätten wir in einer der vorherigen Aufgaben Abteilungsnamen in einem enum speichern und die Konstante als Schlüssel verwenden können.

Schauen wir uns ein Beispiel an:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Umwandlung in ein Array

Übrigens können Sie auch alle Konstantenwerte eines Enums als Array mit der Methode values() abrufen.

Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Deklaration von Feldern und Methoden in Enums

Auch Felder und Methoden können in Enums deklariert werden.

Betrachten wir ein Beispiel einer Ampel:

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

In Enums funktionieren Methoden etwas anders. Da sie Konstanten sind, können sie nicht verändert werden. Daher fügen wir Felder im Konstruktor dieses enum hinzu und definieren anschließend die Methode getAction(), die sofort die auszuführende Aktion für eine bestimmte Ampel zurückgibt. Wie Sie sehen, geben wir diese Aktion direkt im Enum bei der Aufzählung der Konstanten an.

Sehen wir uns ein Beispiel für den Aufruf einer solchen Methode an:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Wie Sie sehen, haben wir mit Hilfe der Methode getAction() sofort die auszuführende Aktion für eine bestimmte Ampel erhalten. Sie können RED durch jede andere Farbe ersetzen und beobachten, was passiert.

Methoden und Felder in Enums werden nicht so häufig verwendet, aber diese Funktionalität ist vorhanden, daher ist es gut, darüber Bescheid zu wissen. Weitere Informationen zu Enums finden Sie in der Offizielle Java-Dokumentation

Vorteile von Enum in Java

  1. Verbesserte Lesbarkeit: Das Ersetzen von numerischen Konstanten und Zeichenfolgen durch benannte Werte macht den Code lesbarer;
  2. Typsicherheit: Der Compiler gewährleistet Typsicherheit beim Arbeiten mit Enums und verhindert typbezogene Fehler;
  3. Begrenzte Wertemenge: Enums bieten eine feste Menge an Werten, was den Code vorhersehbarer macht;
  4. Möglichkeit, Methoden und Felder hinzuzufügen: Enums können Methoden und Felder enthalten und sind dadurch leistungsfähiger als einfache Aufzählungen.

1. Was ist ein Enum in Java?

2. Wie deklariert man ein Enum namens Months, das die Monate des Jahres repräsentiert?

3. Wie erhält man ein Array aller Werte in einem Enum namens Colors?

4. Welche der folgenden Aussagen über das folgende Enum ist korrekt?

5. Wie würde man currentStatus korrekt mit Status.ACTIVE vergleichen? Beachten Sie das folgende Enum:

question mark

Was ist ein Enum in Java?

Select the correct answer

question mark

Wie deklariert man ein Enum namens Months, das die Monate des Jahres repräsentiert?

Select the correct answer

question mark

Wie erhält man ein Array aller Werte in einem Enum namens Colors?

Select the correct answer

question mark

Welche der folgenden Aussagen über das folgende Enum ist korrekt?

Select the correct answer

question mark

Wie würde man currentStatus korrekt mit Status.ACTIVE vergleichen? Beachten Sie das folgende Enum:

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

bookArbeiten mit Enum in Java

Swipe um das Menü anzuzeigen

Kommen wir nun zu einer sehr interessanten und vor allem besonderen Datenstruktur – dem enum.

Betrachten wir die Erstellung eines enum. Die Erstellung eines enum unterscheidet sich deutlich von anderen Datenstrukturen, da sie auf Klassenebene erfolgt:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Praktische Anwendung

Enum wird benötigt, damit Sie einfach auf die Konstante verweisen können. Da es sich um eine Liste von Konstanten handelt, greifen Sie folgendermaßen darauf zu:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Hier greifen wir einfach auf die enum-Konstante zu, um zu verstehen, welcher Tag heute ist. Anstatt viele verschiedene Konstanten zu erstellen, speichern wir einfach ein Array von Konstanten im enum. Das ist bequem und sehr praktisch. Zum Beispiel hätten wir in einer der vorherigen Aufgaben Abteilungsnamen in einem enum speichern und die Konstante als Schlüssel verwenden können.

Schauen wir uns ein Beispiel an:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Umwandlung in ein Array

Übrigens können Sie auch alle Konstantenwerte eines Enums als Array mit der Methode values() abrufen.

Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Deklaration von Feldern und Methoden in Enums

Auch Felder und Methoden können in Enums deklariert werden.

Betrachten wir ein Beispiel einer Ampel:

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

In Enums funktionieren Methoden etwas anders. Da sie Konstanten sind, können sie nicht verändert werden. Daher fügen wir Felder im Konstruktor dieses enum hinzu und definieren anschließend die Methode getAction(), die sofort die auszuführende Aktion für eine bestimmte Ampel zurückgibt. Wie Sie sehen, geben wir diese Aktion direkt im Enum bei der Aufzählung der Konstanten an.

Sehen wir uns ein Beispiel für den Aufruf einer solchen Methode an:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Wie Sie sehen, haben wir mit Hilfe der Methode getAction() sofort die auszuführende Aktion für eine bestimmte Ampel erhalten. Sie können RED durch jede andere Farbe ersetzen und beobachten, was passiert.

Methoden und Felder in Enums werden nicht so häufig verwendet, aber diese Funktionalität ist vorhanden, daher ist es gut, darüber Bescheid zu wissen. Weitere Informationen zu Enums finden Sie in der Offizielle Java-Dokumentation

Vorteile von Enum in Java

  1. Verbesserte Lesbarkeit: Das Ersetzen von numerischen Konstanten und Zeichenfolgen durch benannte Werte macht den Code lesbarer;
  2. Typsicherheit: Der Compiler gewährleistet Typsicherheit beim Arbeiten mit Enums und verhindert typbezogene Fehler;
  3. Begrenzte Wertemenge: Enums bieten eine feste Menge an Werten, was den Code vorhersehbarer macht;
  4. Möglichkeit, Methoden und Felder hinzuzufügen: Enums können Methoden und Felder enthalten und sind dadurch leistungsfähiger als einfache Aufzählungen.

1. Was ist ein Enum in Java?

2. Wie deklariert man ein Enum namens Months, das die Monate des Jahres repräsentiert?

3. Wie erhält man ein Array aller Werte in einem Enum namens Colors?

4. Welche der folgenden Aussagen über das folgende Enum ist korrekt?

5. Wie würde man currentStatus korrekt mit Status.ACTIVE vergleichen? Beachten Sie das folgende Enum:

question mark

Was ist ein Enum in Java?

Select the correct answer

question mark

Wie deklariert man ein Enum namens Months, das die Monate des Jahres repräsentiert?

Select the correct answer

question mark

Wie erhält man ein Array aller Werte in einem Enum namens Colors?

Select the correct answer

question mark

Welche der folgenden Aussagen über das folgende Enum ist korrekt?

Select the correct answer

question mark

Wie würde man currentStatus korrekt mit Status.ACTIVE vergleichen? Beachten Sie das folgende Enum:

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
some-alt