Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Att Arbeta med Enum i Java | Avancerade Java-Funktioner och Tekniker
Java Datastrukturer

bookAtt Arbeta med Enum i Java

Låt oss gå vidare till en annan mycket intressant och, viktigast av allt, särskiljande datastruktur - enum.

Låt oss titta på hur man skapar en enum. Att skapa en enum skiljer sig avsevärt från andra datastrukturer, eftersom det görs på klassenivå:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk tillämpning

Enum behövs för att du enkelt ska kunna referera till konstanten. Eftersom det är en lista av konstanter, får du åtkomst på följande sätt:

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 }

Här får vi helt enkelt åtkomst till enum-konstanten för att förstå vilken dag det är idag. Istället för att skapa många olika konstanter, lagrar vi bara en array av konstanter i enum. Detta är bekvämt och mycket praktiskt. Till exempel, i en av de tidigare utmaningarna, kunde vi ha lagrat avdelningsnamn i en enum och använt konstanten som nyckel.

Låt oss titta på ett exempel:

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 till en array

För övrigt kan du även hämta alla konstanter från en enum som en array med hjälp av metoden values().

Låt oss titta på ett exempel:

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 }

Deklarera fält och metoder i enum

Det är även möjligt att deklarera fält och metoder i enum.

Låt oss titta på ett exempel med ett trafikljus:

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 enum fungerar metoder på ett något annorlunda sätt. Eftersom de är konstanter kan de inte ändras. Därför lägger vi till fält i konstruktorn för denna enum, och därefter definierar vi metoden getAction() som direkt returnerar åtgärden som ska utföras för ett specifikt trafikljus. Som du kan se anges denna åtgärd direkt i enumen när konstanterna deklareras.

Låt oss titta på ett exempel på hur en sådan metod anropas:

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, med hjälp av metoden getAction() erhölls åtgärden som ska vidtas för ett specifikt trafikljus direkt. Du kan ändra RED till någon annan färg och se vad som händer.

Metoder och fält i enum används inte så ofta, men denna funktionalitet finns, så det är bra att känna till den. Du kan läsa mer om enum i Officiell Java-dokumentation

Fördelar med Enum i Java

  1. Förbättrad läsbarhet: att ersätta numeriska konstanter och stränglitteraler med namngivna värden gör koden mer läsbar;
  2. Typsäkerhet: kompilatorn säkerställer typsäkerhet vid arbete med enum och förhindrar typrelaterade fel;
  3. Begränsad uppsättning värden: enum tillhandahåller en fast uppsättning värden, vilket gör koden mer förutsägbar;
  4. Möjlighet att lägga till metoder och fält: enum kan innehålla metoder och fält, vilket gör dem kraftfullare jämfört med enkla uppräkningar.

1. Vad är en enum i Java?

2. Hur deklarerar du en enum kallad Months som representerar årets månader?

3. Hur kan du erhålla en array med alla värden i en enum kallad Colors?

4. Vilket av följande påståenden om följande enum är sant?

5. Hur jämför du korrekt currentStatus med Status.ACTIVE? Se följande enum:

question mark

Vad är en enum i Java?

Select the correct answer

question mark

Hur deklarerar du en enum kallad Months som representerar årets månader?

Select the correct answer

question mark

Hur kan du erhålla en array med alla värden i en enum kallad Colors?

Select the correct answer

question mark

Vilket av följande påståenden om följande enum är sant?

Select the correct answer

question mark

Hur jämför du korrekt currentStatus med Status.ACTIVE? Se följande enum:

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookAtt Arbeta med Enum i Java

Svep för att visa menyn

Låt oss gå vidare till en annan mycket intressant och, viktigast av allt, särskiljande datastruktur - enum.

Låt oss titta på hur man skapar en enum. Att skapa en enum skiljer sig avsevärt från andra datastrukturer, eftersom det görs på klassenivå:

DaysOfTheWeek.java

DaysOfTheWeek.java

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

Praktisk tillämpning

Enum behövs för att du enkelt ska kunna referera till konstanten. Eftersom det är en lista av konstanter, får du åtkomst på följande sätt:

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 }

Här får vi helt enkelt åtkomst till enum-konstanten för att förstå vilken dag det är idag. Istället för att skapa många olika konstanter, lagrar vi bara en array av konstanter i enum. Detta är bekvämt och mycket praktiskt. Till exempel, i en av de tidigare utmaningarna, kunde vi ha lagrat avdelningsnamn i en enum och använt konstanten som nyckel.

Låt oss titta på ett exempel:

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 till en array

För övrigt kan du även hämta alla konstanter från en enum som en array med hjälp av metoden values().

Låt oss titta på ett exempel:

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 }

Deklarera fält och metoder i enum

Det är även möjligt att deklarera fält och metoder i enum.

Låt oss titta på ett exempel med ett trafikljus:

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 enum fungerar metoder på ett något annorlunda sätt. Eftersom de är konstanter kan de inte ändras. Därför lägger vi till fält i konstruktorn för denna enum, och därefter definierar vi metoden getAction() som direkt returnerar åtgärden som ska utföras för ett specifikt trafikljus. Som du kan se anges denna åtgärd direkt i enumen när konstanterna deklareras.

Låt oss titta på ett exempel på hur en sådan metod anropas:

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, med hjälp av metoden getAction() erhölls åtgärden som ska vidtas för ett specifikt trafikljus direkt. Du kan ändra RED till någon annan färg och se vad som händer.

Metoder och fält i enum används inte så ofta, men denna funktionalitet finns, så det är bra att känna till den. Du kan läsa mer om enum i Officiell Java-dokumentation

Fördelar med Enum i Java

  1. Förbättrad läsbarhet: att ersätta numeriska konstanter och stränglitteraler med namngivna värden gör koden mer läsbar;
  2. Typsäkerhet: kompilatorn säkerställer typsäkerhet vid arbete med enum och förhindrar typrelaterade fel;
  3. Begränsad uppsättning värden: enum tillhandahåller en fast uppsättning värden, vilket gör koden mer förutsägbar;
  4. Möjlighet att lägga till metoder och fält: enum kan innehålla metoder och fält, vilket gör dem kraftfullare jämfört med enkla uppräkningar.

1. Vad är en enum i Java?

2. Hur deklarerar du en enum kallad Months som representerar årets månader?

3. Hur kan du erhålla en array med alla värden i en enum kallad Colors?

4. Vilket av följande påståenden om följande enum är sant?

5. Hur jämför du korrekt currentStatus med Status.ACTIVE? Se följande enum:

question mark

Vad är en enum i Java?

Select the correct answer

question mark

Hur deklarerar du en enum kallad Months som representerar årets månader?

Select the correct answer

question mark

Hur kan du erhålla en array med alla värden i en enum kallad Colors?

Select the correct answer

question mark

Vilket av följande påståenden om följande enum är sant?

Select the correct answer

question mark

Hur jämför du korrekt currentStatus med Status.ACTIVE? Se följande enum:

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 1
some-alt