Klasa wyliczenia i wyliczenia w języku Java (z przykładami)

W tym samouczku dowiemy się o wyliczeniach w Javie. Nauczymy się tworzyć i używać wyliczeń i klas wyliczeniowych za pomocą przykładów.

W Javie wyliczenie (skrót od wyliczenia) to typ, który ma ustalony zestaw wartości stałych. Używamy enumsłowa kluczowego do deklarowania wyliczeń. Na przykład,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Tutaj utworzyliśmy wyliczenie o nazwie Size. Zawiera stałe wartości MAŁE, ŚREDNIE, DUŻE i EKSTRALARNE.

Te wartości w nawiasach klamrowych nazywane są stałymi wyliczenia (wartościami).

Uwaga: Stałe wyliczeniowe są zwykle przedstawiane wielkimi literami.

Przykład 1: Java Enum

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )

Wynik

 MAŁY ŚREDNI

Jak widać z powyższego przykładu, używamy nazwy wyliczenia, aby uzyskać dostęp do stałych wartości.

Możemy również tworzyć zmienne typu wyliczeniowego. Na przykład,

 Size pizzaSize;

Tutaj pizzaSize jest zmienną typu Size. Można mu przypisać tylko 4 wartości.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Przykład 2: Java Enum z instrukcją switch

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )

Wynik

 Zamówiłem średniej wielkości pizzę.

W powyższym programie utworzyliśmy rozmiar typu wyliczenia. Następnie zadeklarowaliśmy zmienną pizzaSize typu Size.

Tutaj zmiennej pizzaSize można przypisać tylko 4 wartości (SMALL, MEDIUM, LARGE, EXTRALARGE).

Zwróć uwagę na oświadczenie,

 Test t1 = new Test(Size.MEDIUM);

Wywoła Test()konstruktora wewnątrz klasy Test. Teraz zmiennej pizzaSize jest przypisana stała MEDIUM.

Na podstawie wartości wykonywany jest jeden z przypadków instrukcji switch case.

Klasa Enum w Javie

W Javie typy wyliczeniowe są uważane za specjalny typ klasy. Został wprowadzony wraz z wydaniem Java 5.

Klasa wyliczeniowa może zawierać metody i pola, podobnie jak zwykłe klasy.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Kiedy tworzymy klasę wyliczenia, kompilator utworzy instancje (obiekty) każdej stałej wyliczeniowej. Ponadto wszystkie stałe wyliczeniowe są zawsze public static finaldomyślnie.

Przykład 3: Klasa Java Enum

 enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )

Wynik

 Rozmiar pizzy jest niewielki

W powyższym przykładzie utworzyliśmy klasę wyliczenia Size. Ma cztery stałe SMALL, MEDIUM, LARGE i EXTRALARGE.

Ponieważ Size jest klasą wyliczeniową, kompilator automatycznie tworzy wystąpienia dla każdej stałej wyliczeniowej.

Wewnątrz main()metody użyliśmy instancji SMALL do wywołania getSize()metody.

Uwaga : Podobnie jak zwykłe klasy, klasa wyliczenia może również zawierać konstruktory. Aby dowiedzieć się więcej na ten temat, odwiedź konstruktora wyliczeń w języku Java.

Metody klasy Java Enum

Istnieje kilka predefiniowanych metod w klasach wyliczeniowych, które są łatwo dostępne do użycia.

1. Numer porządkowy Java Enum ()

ordinal()Sposób wraca do położenia na stałą wyliczeniowego. Na przykład,

 ordinal(SMALL) // returns 0

2. Wyliczenie do porównania ()

compareTo()Metoda porównuje stałe enum w oparciu o ich wartości porządkowej. Na przykład,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Wyliczenie toString ()

toString()Metoda zwraca ciąg znaków reprezentujący stałych enum. Na przykład,

 SMALL.toString() // returns "SMALL"

4. Nazwa wyliczenia ()

name()Metoda zwraca nazwę zdefiniowaną w stałej enum w postaci łańcucha. Zwracana wartość z name()metody to final. Na przykład,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

 class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Tutaj gwarantuje się, że zmienna będzie zawierać jedną z czterech wartości. Teraz, jeśli spróbujemy przekazać wartości inne niż te cztery wartości, kompilator wygeneruje błąd.

Interesujące artykuły...