Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Enum in Java | Geavanceerde Java-Functies en -Technieken
Java Datastructuren

bookWerken met Enum in Java

Laten we verder gaan met een zeer interessante en, nog belangrijker, onderscheidende datastructuur - enum.

Laten we kijken naar het aanmaken van een enum. Het aanmaken van een enum verschilt aanzienlijk van andere datastructuren, omdat dit gebeurt op het klasseniveau:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktische Toepassing

Enum is nodig zodat u eenvoudig naar de constante kunt verwijzen. Omdat het een lijst van constanten is, krijgt u er als volgt toegang toe:

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 krijgen we eenvoudig toegang tot de enum-constante om te bepalen welke dag het vandaag is. In plaats van veel verschillende constanten te maken, slaan we gewoon een array van constanten op in de enum. Dit is handig en zeer praktisch. Bijvoorbeeld, in een van de vorige uitdagingen hadden we afdelingsnamen kunnen opslaan in een enum en de constante als sleutel kunnen gebruiken.

Laten we naar een voorbeeld kijken:

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 }

Conversie naar een Array

Overigens kun je ook alle constante waarden uit een enum ophalen als een array met behulp van de methode values().

Bekijk het volgende voorbeeld:

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 }

Velden en methoden declareren in enums

Je kunt ook velden en methoden declareren in enums.

Laten we een voorbeeld van een verkeerslicht bekijken:

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 werken methoden iets anders. Omdat het constanten zijn, kunnen ze niet worden gewijzigd. Daarom voegen we velden toe in de constructor van deze enum, waarna we de methode getAction() definiëren die direct de uit te voeren actie voor een specifiek verkeerslicht retourneert. Zoals je ziet, geven we deze actie direct op in de enum bij het opsommen van de constanten.

Laten we een voorbeeld bekijken van het aanroepen van zo'n methode:

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; } }

Zoals te zien is, werd met behulp van de methode getAction() direct de te nemen actie voor een specifiek verkeerslicht verkregen. U kunt RED veranderen in elke andere kleur en het resultaat observeren.

Methoden en velden in enums worden minder vaak gebruikt, maar deze functionaliteit is aanwezig en het is goed hiervan op de hoogte te zijn. Meer informatie over enums is te vinden in de Officiële Java-documentatie

Voordelen van Enum in Java

  1. Verbeterde leesbaarheid: het vervangen van numerieke constanten en stringwaarden door benoemde waarden verhoogt de leesbaarheid van de code;
  2. Typeveiligheid: de compiler waarborgt typeveiligheid bij het werken met enums, waardoor typegerelateerde fouten worden voorkomen;
  3. Beperkte set waarden: enums bieden een vaste set waarden, wat de voorspelbaarheid van de code vergroot;
  4. Mogelijkheid tot toevoegen van methoden en velden: enums kunnen methoden en velden bevatten, waardoor ze krachtiger zijn dan eenvoudige enumeraties.

1. Wat is een enum in Java?

2. Hoe declareer je een enum genaamd Months die de maanden van het jaar voorstelt?

3. Hoe verkrijg je een array van alle waarden in een enum genaamd Colors?

4. Welke van de volgende uitspraken over de onderstaande enum is waar?

5. Hoe zou je currentStatus correct vergelijken met Status.ACTIVE? Bekijk de volgende enum:

question mark

Wat is een enum in Java?

Select the correct answer

question mark

Hoe declareer je een enum genaamd Months die de maanden van het jaar voorstelt?

Select the correct answer

question mark

Hoe verkrijg je een array van alle waarden in een enum genaamd Colors?

Select the correct answer

question mark

Welke van de volgende uitspraken over de onderstaande enum is waar?

Select the correct answer

question mark

Hoe zou je currentStatus correct vergelijken met Status.ACTIVE? Bekijk de volgende enum:

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

What is the syntax for creating an enum in Java?

Can you show an example of how to use enums in a Java program?

What are some common use cases for enums in Java?

bookWerken met Enum in Java

Veeg om het menu te tonen

Laten we verder gaan met een zeer interessante en, nog belangrijker, onderscheidende datastructuur - enum.

Laten we kijken naar het aanmaken van een enum. Het aanmaken van een enum verschilt aanzienlijk van andere datastructuren, omdat dit gebeurt op het klasseniveau:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktische Toepassing

Enum is nodig zodat u eenvoudig naar de constante kunt verwijzen. Omdat het een lijst van constanten is, krijgt u er als volgt toegang toe:

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 krijgen we eenvoudig toegang tot de enum-constante om te bepalen welke dag het vandaag is. In plaats van veel verschillende constanten te maken, slaan we gewoon een array van constanten op in de enum. Dit is handig en zeer praktisch. Bijvoorbeeld, in een van de vorige uitdagingen hadden we afdelingsnamen kunnen opslaan in een enum en de constante als sleutel kunnen gebruiken.

Laten we naar een voorbeeld kijken:

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 }

Conversie naar een Array

Overigens kun je ook alle constante waarden uit een enum ophalen als een array met behulp van de methode values().

Bekijk het volgende voorbeeld:

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 }

Velden en methoden declareren in enums

Je kunt ook velden en methoden declareren in enums.

Laten we een voorbeeld van een verkeerslicht bekijken:

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 werken methoden iets anders. Omdat het constanten zijn, kunnen ze niet worden gewijzigd. Daarom voegen we velden toe in de constructor van deze enum, waarna we de methode getAction() definiëren die direct de uit te voeren actie voor een specifiek verkeerslicht retourneert. Zoals je ziet, geven we deze actie direct op in de enum bij het opsommen van de constanten.

Laten we een voorbeeld bekijken van het aanroepen van zo'n methode:

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; } }

Zoals te zien is, werd met behulp van de methode getAction() direct de te nemen actie voor een specifiek verkeerslicht verkregen. U kunt RED veranderen in elke andere kleur en het resultaat observeren.

Methoden en velden in enums worden minder vaak gebruikt, maar deze functionaliteit is aanwezig en het is goed hiervan op de hoogte te zijn. Meer informatie over enums is te vinden in de Officiële Java-documentatie

Voordelen van Enum in Java

  1. Verbeterde leesbaarheid: het vervangen van numerieke constanten en stringwaarden door benoemde waarden verhoogt de leesbaarheid van de code;
  2. Typeveiligheid: de compiler waarborgt typeveiligheid bij het werken met enums, waardoor typegerelateerde fouten worden voorkomen;
  3. Beperkte set waarden: enums bieden een vaste set waarden, wat de voorspelbaarheid van de code vergroot;
  4. Mogelijkheid tot toevoegen van methoden en velden: enums kunnen methoden en velden bevatten, waardoor ze krachtiger zijn dan eenvoudige enumeraties.

1. Wat is een enum in Java?

2. Hoe declareer je een enum genaamd Months die de maanden van het jaar voorstelt?

3. Hoe verkrijg je een array van alle waarden in een enum genaamd Colors?

4. Welke van de volgende uitspraken over de onderstaande enum is waar?

5. Hoe zou je currentStatus correct vergelijken met Status.ACTIVE? Bekijk de volgende enum:

question mark

Wat is een enum in Java?

Select the correct answer

question mark

Hoe declareer je een enum genaamd Months die de maanden van het jaar voorstelt?

Select the correct answer

question mark

Hoe verkrijg je een array van alle waarden in een enum genaamd Colors?

Select the correct answer

question mark

Welke van de volgende uitspraken over de onderstaande enum is waar?

Select the correct answer

question mark

Hoe zou je currentStatus correct vergelijken met Status.ACTIVE? Bekijk de volgende enum:

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 1
some-alt