logo

wyliczenie w Javie

W Javie wyliczenia (wyliczenia) są specjalnym typem używanym do definiowania grupy nazwanych stałych.

  • Wyliczenia pomagają w utrzymaniu czytelności i bezpieczeństwie typów w programach, przypisując znaczące nazwy wartościom całkowitym.
  • Przydatne głównie, gdy mamy mały zestaw możliwych wartości elementu, np. wskazówki, dni tygodnia itp.

Tworzenie wyliczenia

Składnia:



es5 kontra es6

wyliczenie Nazwa wyliczenia {

STAŁA1 STAŁA2 STAŁA3;

}



rstrip Pythona
Java
enum TrafficLight {  RED GREEN YELLOW; } public class Test{    public static void main(String[] args){    TrafficLight x = TrafficLight.RED;  System.out.println(x);  } } 

Wyjście
RED 

Deklaracja wyliczenia w Javie

Deklarację wyliczenia można wykonać poza klasą lub wewnątrz klasy, ale nie wewnątrz metody.

1. Deklaracja poza zajęciami

Jak widzieliśmy w powyższym przykładzie wyliczenia można zadeklarować poza klasą i uzyskać do nich bezpośredni dostęp

2. Deklaracja wewnątrz klasy

Wyliczenia można również deklarować wewnątrz klasy, ale nie wewnątrz metody.



Java
public class Test {  enum Color {  RED  GREEN  BLUE;  }  // Driver method  public static void main(String[] args) {  Color c1 = Color.RED;  System.out.println(c1);  } } 

Wyjście
RED 

Właściwości Enum w Javie

Istnieją pewne właściwości, po których następuje Enum, jak wspomniano poniżej:

gdzie jest klawisz wstawiania na klawiaturze laptopa
  • Typ klasy: Zaimplementowane wewnętrznie jako klasa.
  • Stałe wyliczeniowe: Każda stała jest obiektem typu wyliczeniowego.
  • Przełącznik wsparcie: Można go używać w instrukcjach switch.
  • Niejawne modyfikatory: Stałe są publicznym, statycznym finałem.
  • Dziedzictwo: Wyliczenia nie mogą rozszerzać klas, ale mogą implementować interfejsy.

Enum w instrukcji Switch

Wyliczenia mogą być używane w instrukcjach switch do obsługi różnych przypadków w oparciu o stałe wyliczeniowe.

Java
import java.io.*; class GFG{    // Enum Declared  enum Color {  RED  GREEN  BLUE  YELLOW;  }  public static void main(String[] args){    Color var_1 = Color.YELLOW;  // Switch case with Enum  switch (var_1) {  case RED:  System.out.println('Red color');  break;  case GREEN:  System.out.println('Green color');  break;  case BLUE:  System.out.println('Blue color');  break;  default:  System.out.println('Other color');  }  } } 

Wyjście
Other color 

Wyliczenie z metodami i konstruktorem

Wyliczenia mogą mieć konstruktory i metody wykonywane oddzielnie dla każdej stałej

Java
enum Color{  RED GREEN BLUE;  private Color(){    System.out.println('Constructor called for: ' + this);  }  public void display(){    System.out.println('Color is: ' + this);  } } public class Test{    public static void main(String[] args){    Color c1 = Color.RED;  c1.display();  } } 

Wyjście
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Wyliczenie z metodami abstrakcyjnymi

Wyliczenia mogą deklarować metody abstrakcyjne, które każda stała musi implementować.

Java
enum Day{    MONDAY{    public String getNumber(){  return '1st day';     }  }  FRIDAY{    public String getNumber(){  return '5th day';     }  };    public abstract String getNumber(); } public class EnumTest {  public static void main(String[] args){    System.out.println(Day.MONDAY.getNumber());   System.out.println(Day.FRIDAY.getNumber());  } } 

Wyjście
1st day 5th day 

Iterowanie wyliczeń za pomocą wartości()

Użyj EnumType.values() do przeglądania wszystkich stałych wyliczeniowych.

Oświadczenie w sprawie Verilog
Java
enum Color{  RED GREEN BLUE;   } public class Test{    public static void main(String[] args){    for (Color c : Color.values()){    System.out.println(c);  }  } } 

Wyjście
RED GREEN BLUE 

Enum i EnumSet (Iteracja określonego zakresu)

EnumSet.range() umożliwia iterację po określonym zakresie stałych wyliczeniowych.

Java
import java.util.EnumSet; public class EnumSetExample{    enum Day{    SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY;     }  public static void main(String[] args){    EnumSet<Day> workDays = EnumSet.range(Day.TUESDAY Day.FRIDAY);  for (Day d : workDays){    System.out.println(d);  }  } } 

Wyjście
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Tworzenie klasy z członkiem Enum

Możemy łączyć wyliczenia ze zwykłymi klasami, aby uporządkować logikę programu. Wyliczenie może być zmienną składową klasy, a metody mogą wykonywać akcje na podstawie wartości wyliczenia.

Java
/*package whatever //do not write package name here */ import java.io.*; enum Day {  MONDAY  TUESDAY  WEDNESDAY  THURSDAY  FRIDAY  SATURDAY  SUNDAY } public class EnumTest {  // Enum member variable  Day day;  // constructor which takes enum value  public EnumTest(Day day) { this.day = day; }  // method to execute action as per enum value  public void tellItLikeItIs()  {  switch (day) {  case MONDAY:  System.out.println('Mondays are tough');  break;  case TUESDAY:  System.out.println('Tuesday are better');  break;  case WEDNESDAY:  System.out.println('Wednesday are okay');  break;  case THURSDAY:  System.out.println('Thursdays are hopeful');  break;  case FRIDAY:  System.out.println('Fridays are exciting');  break;  case SATURDAY:  System.out.println('Saturdays are relaxing');  break;  case SUNDAY:  System.out.println('Sunday are for rest');  break;  default:  System.out.println('Everyday are good');  break;  }  }  public static void main(String[] args)  {  EnumTest firstDay = new EnumTest(Day.MONDAY);  firstDay.tellItLikeItIs();  EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);  thirdDay.tellItLikeItIs();  EnumTest fifthDay = new EnumTest(Day.FRIDAY);  fifthDay.tellItLikeItIs();  EnumTest sixthDay = new EnumTest(Day.SATURDAY);  sixthDay.tellItLikeItIs();  EnumTest seventhDay = new EnumTest(Day.SUNDAY);  seventhDay.tellItLikeItIs();  } } 

Wyjście
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Wyjaśnienie:

  • Klasa EnumTest w powyższym kodzie jest tworzona z elementem typu Day. Posiada konstruktor, który przyjmuje wyliczenie Day jako argument i przypisuje je.
  • Klasa posiada metodę tellItLikeItIs(), która wypisuje komunikat w oparciu o wartość dnia.
  • Główna metoda obejmuje obiekty EnumTest używające różnych wartości wyliczeniowych Day i wywołujące metodę tellItLikeItIs() na każdym z nich.

NOTATKA: Używane jest słowo kluczowe new, ponieważ EnumTest jest zwykłą klasą, a nie wyliczeniem, dlatego tworzymy instancje i przekazujemy wartość wyliczenia do jej konstruktora.