Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbejde med Enum i Java | Avancerede Java-Funktioner og -Teknikker
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Datastrukturer

bookArbejde med Enum i Java

Lad os gå videre til en meget interessant og, vigtigst af alt, særegen datastruktur - enum.

Lad os se på, hvordan man opretter en enum. Oprettelsen af en enum adskiller sig markant fra andre datastrukturer, da det sker på klasseniveau:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk Anvendelse

Enum bruges, så du nemt kan referere til konstanten. Da det er en liste af konstanter, tilgås den på følgende måde:

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 }

Her tilgås blot enum-konstanten for at forstå hvilken dag det er i dag. I stedet for at oprette mange forskellige konstanter, gemmes blot et array af konstanter i enum. Dette er bekvemt og meget praktisk. For eksempel kunne vi i en af de tidligere udfordringer have gemt afdelingsnavne i en enum og brugt konstanten som nøgle.

Lad os se på et eksempel:

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 }

Konvertering til et array

Du kan også hente alle konstante værdier fra en enum som et array ved at bruge values()-metoden.

Lad os se på et eksempel:

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 }

Deklarering af felter og metoder i enums

Du kan også erklære felter og metoder i enums.

Lad os overveje et eksempel med et trafiklys:

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

I enums fungerer metoder en smule anderledes. Da de er konstanter, kan de ikke ændres. Derfor tilføjer vi felter i konstruktøren af denne enum, hvorefter vi definerer metoden getAction(), som straks returnerer handlingen, der skal udføres for et bestemt trafiklys. Som du kan se, angiver vi denne handling direkte i enum'en, når vi opregner konstanterne.

Lad os se et eksempel på at kalde en sådan metode:

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

Som du kan se, fik vi med hjælp fra metoden getAction() straks handlingen, der skal udføres for et bestemt trafiklys. Du kan ændre RED til en hvilken som helst anden farve og se, hvad der sker.

Metoder og felter i enums bruges ikke så ofte, men denne funktionalitet er tilgængelig, så det er godt at være opmærksom på det. Du kan læse mere om enums i Officiel Java-dokumentation

Fordele ved Enum i Java

  1. Forbedret læsbarhed: udskiftning af numeriske konstanter og streng-litteraler med navngivne værdier gør koden mere læsbar;
  2. Typesikkerhed: compileren sikrer typesikkerhed ved arbejde med enums og forhindrer type-relaterede fejl;
  3. Begrænset sæt af værdier: enums giver et fast sæt af værdier, hvilket gør koden mere forudsigelig;
  4. Mulighed for at tilføje metoder og felter: enums kan indeholde metoder og felter, hvilket gør dem mere kraftfulde sammenlignet med simple enumerationer.

1. Hvad er en enum i Java?

2. Hvordan erklærer du en enum kaldet Months, der repræsenterer årets måneder?

3. Hvordan kan du opnå et array af alle værdier i en enum kaldet Colors?

4. Hvilket af følgende udsagn om nedenstående enum er sandt?

5. Hvordan sammenlignes currentStatus korrekt med Status.ACTIVE? Overvej følgende enum:

question mark

Hvad er en enum i Java?

Select the correct answer

question mark

Hvordan erklærer du en enum kaldet Months, der repræsenterer årets måneder?

Select the correct answer

question mark

Hvordan kan du opnå et array af alle værdier i en enum kaldet Colors?

Select the correct answer

question mark

Hvilket af følgende udsagn om nedenstående enum er sandt?

Select the correct answer

question mark

Hvordan sammenlignes currentStatus korrekt med Status.ACTIVE? Overvej følgende enum:

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookArbejde med Enum i Java

Stryg for at vise menuen

Lad os gå videre til en meget interessant og, vigtigst af alt, særegen datastruktur - enum.

Lad os se på, hvordan man opretter en enum. Oprettelsen af en enum adskiller sig markant fra andre datastrukturer, da det sker på klasseniveau:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk Anvendelse

Enum bruges, så du nemt kan referere til konstanten. Da det er en liste af konstanter, tilgås den på følgende måde:

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 }

Her tilgås blot enum-konstanten for at forstå hvilken dag det er i dag. I stedet for at oprette mange forskellige konstanter, gemmes blot et array af konstanter i enum. Dette er bekvemt og meget praktisk. For eksempel kunne vi i en af de tidligere udfordringer have gemt afdelingsnavne i en enum og brugt konstanten som nøgle.

Lad os se på et eksempel:

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 }

Konvertering til et array

Du kan også hente alle konstante værdier fra en enum som et array ved at bruge values()-metoden.

Lad os se på et eksempel:

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 }

Deklarering af felter og metoder i enums

Du kan også erklære felter og metoder i enums.

Lad os overveje et eksempel med et trafiklys:

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

I enums fungerer metoder en smule anderledes. Da de er konstanter, kan de ikke ændres. Derfor tilføjer vi felter i konstruktøren af denne enum, hvorefter vi definerer metoden getAction(), som straks returnerer handlingen, der skal udføres for et bestemt trafiklys. Som du kan se, angiver vi denne handling direkte i enum'en, når vi opregner konstanterne.

Lad os se et eksempel på at kalde en sådan metode:

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

Som du kan se, fik vi med hjælp fra metoden getAction() straks handlingen, der skal udføres for et bestemt trafiklys. Du kan ændre RED til en hvilken som helst anden farve og se, hvad der sker.

Metoder og felter i enums bruges ikke så ofte, men denne funktionalitet er tilgængelig, så det er godt at være opmærksom på det. Du kan læse mere om enums i Officiel Java-dokumentation

Fordele ved Enum i Java

  1. Forbedret læsbarhed: udskiftning af numeriske konstanter og streng-litteraler med navngivne værdier gør koden mere læsbar;
  2. Typesikkerhed: compileren sikrer typesikkerhed ved arbejde med enums og forhindrer type-relaterede fejl;
  3. Begrænset sæt af værdier: enums giver et fast sæt af værdier, hvilket gør koden mere forudsigelig;
  4. Mulighed for at tilføje metoder og felter: enums kan indeholde metoder og felter, hvilket gør dem mere kraftfulde sammenlignet med simple enumerationer.

1. Hvad er en enum i Java?

2. Hvordan erklærer du en enum kaldet Months, der repræsenterer årets måneder?

3. Hvordan kan du opnå et array af alle værdier i en enum kaldet Colors?

4. Hvilket af følgende udsagn om nedenstående enum er sandt?

5. Hvordan sammenlignes currentStatus korrekt med Status.ACTIVE? Overvej følgende enum:

question mark

Hvad er en enum i Java?

Select the correct answer

question mark

Hvordan erklærer du en enum kaldet Months, der repræsenterer årets måneder?

Select the correct answer

question mark

Hvordan kan du opnå et array af alle værdier i en enum kaldet Colors?

Select the correct answer

question mark

Hvilket af følgende udsagn om nedenstående enum er sandt?

Select the correct answer

question mark

Hvordan sammenlignes currentStatus korrekt med Status.ACTIVE? Overvej følgende enum:

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1
some-alt