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

bookArbeide med Enum i Java

La oss gå videre til en annen ganske interessant og, viktigst av alt, særpreget datastrukturenum.

La oss se på hvordan man oppretter en enum. Å opprette en enum skiller seg betydelig fra andre datastrukturer, siden det gjøres på klassenivå:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk anvendelse

Enum brukes slik at du enkelt kan referere til konstanten. Siden det er en liste med konstanter, får du tilgang på følgende måte:

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 får vi enkelt tilgang til enum-konstanten for å forstå hvilken dag det er i dag. I stedet for å opprette mange ulike konstanter, lagrer vi bare et array av konstanter i enum. Dette er praktisk og effektivt. For eksempel, i en av de tidligere oppgavene, kunne vi lagret avdelingsnavn i en enum og brukt konstanten som nøkkel.

La oss 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 en tabell

For øvrig kan du også hente ut alle konstante verdier fra en enum som en tabell ved å bruke values()-metoden.

La oss 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 av felt og metoder i enums

Du kan også deklarere felt og metoder i enums.

La oss se på et eksempel med et trafikklys:

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 litt annerledes. Siden de er konstanter, kan de ikke endres. Derfor legger vi til felt i konstruktøren til denne enum, og deretter definerer vi metoden getAction() som umiddelbart returnerer handlingen som skal utføres for et spesifikt trafikklys. Som du ser, spesifiserer vi denne handlingen direkte i enumen når vi lister opp konstantene.

La oss se på et eksempel på å kalle en slik 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 ser, med hjelp av metoden getAction(), fikk vi umiddelbart handlingen som skal utføres for et bestemt trafikklys. Du kan endre RED til en hvilken som helst annen farge og se hva som skjer.

Metoder og felt i enums brukes ikke så ofte, men denne funksjonaliteten finnes, så det er greit å være klar over det. Du kan lese mer om enums i Offisiell Java-dokumentasjon

Fordeler med Enum i Java

  1. Bedre lesbarhet: å erstatte numeriske konstanter og streng-litteraler med navngitte verdier gjør koden mer lesbar;
  2. Typesikkerhet: kompilatoren sikrer typesikkerhet ved bruk av enums, og forhindrer type-relaterte feil;
  3. Begrenset sett med verdier: enums gir et fast sett med verdier, noe som gjør koden mer forutsigbar;
  4. Mulighet for å legge til metoder og felt: enums kan inneholde metoder og felt, noe som gjør dem kraftigere sammenlignet med enkle oppramsinger.

1. Hva er en enum i Java?

2. Hvordan deklarerer du en enum kalt Months som representerer årets måneder?

3. Hvordan kan du hente ut et array med alle verdiene i en enum kalt Colors?

4. Hvilket av følgende utsagn om følgende enum er korrekt?

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

question mark

Hva er en enum i Java?

Select the correct answer

question mark

Hvordan deklarerer du en enum kalt Months som representerer årets måneder?

Select the correct answer

question mark

Hvordan kan du hente ut et array med alle verdiene i en enum kalt Colors?

Select the correct answer

question mark

Hvilket av følgende utsagn om følgende enum er korrekt?

Select the correct answer

question mark

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

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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?

bookArbeide med Enum i Java

Sveip for å vise menyen

La oss gå videre til en annen ganske interessant og, viktigst av alt, særpreget datastrukturenum.

La oss se på hvordan man oppretter en enum. Å opprette en enum skiller seg betydelig fra andre datastrukturer, siden det gjøres på klassenivå:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk anvendelse

Enum brukes slik at du enkelt kan referere til konstanten. Siden det er en liste med konstanter, får du tilgang på følgende måte:

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 får vi enkelt tilgang til enum-konstanten for å forstå hvilken dag det er i dag. I stedet for å opprette mange ulike konstanter, lagrer vi bare et array av konstanter i enum. Dette er praktisk og effektivt. For eksempel, i en av de tidligere oppgavene, kunne vi lagret avdelingsnavn i en enum og brukt konstanten som nøkkel.

La oss 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 en tabell

For øvrig kan du også hente ut alle konstante verdier fra en enum som en tabell ved å bruke values()-metoden.

La oss 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 av felt og metoder i enums

Du kan også deklarere felt og metoder i enums.

La oss se på et eksempel med et trafikklys:

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 litt annerledes. Siden de er konstanter, kan de ikke endres. Derfor legger vi til felt i konstruktøren til denne enum, og deretter definerer vi metoden getAction() som umiddelbart returnerer handlingen som skal utføres for et spesifikt trafikklys. Som du ser, spesifiserer vi denne handlingen direkte i enumen når vi lister opp konstantene.

La oss se på et eksempel på å kalle en slik 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 ser, med hjelp av metoden getAction(), fikk vi umiddelbart handlingen som skal utføres for et bestemt trafikklys. Du kan endre RED til en hvilken som helst annen farge og se hva som skjer.

Metoder og felt i enums brukes ikke så ofte, men denne funksjonaliteten finnes, så det er greit å være klar over det. Du kan lese mer om enums i Offisiell Java-dokumentasjon

Fordeler med Enum i Java

  1. Bedre lesbarhet: å erstatte numeriske konstanter og streng-litteraler med navngitte verdier gjør koden mer lesbar;
  2. Typesikkerhet: kompilatoren sikrer typesikkerhet ved bruk av enums, og forhindrer type-relaterte feil;
  3. Begrenset sett med verdier: enums gir et fast sett med verdier, noe som gjør koden mer forutsigbar;
  4. Mulighet for å legge til metoder og felt: enums kan inneholde metoder og felt, noe som gjør dem kraftigere sammenlignet med enkle oppramsinger.

1. Hva er en enum i Java?

2. Hvordan deklarerer du en enum kalt Months som representerer årets måneder?

3. Hvordan kan du hente ut et array med alle verdiene i en enum kalt Colors?

4. Hvilket av følgende utsagn om følgende enum er korrekt?

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

question mark

Hva er en enum i Java?

Select the correct answer

question mark

Hvordan deklarerer du en enum kalt Months som representerer årets måneder?

Select the correct answer

question mark

Hvordan kan du hente ut et array med alle verdiene i en enum kalt Colors?

Select the correct answer

question mark

Hvilket av følgende utsagn om følgende enum er korrekt?

Select the correct answer

question mark

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

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1
some-alt