Třída Java enum & enum (s příklady)

V tomto tutoriálu se dozvíme o enumech v Javě. Naučíme se vytvářet a používat výčty a výčet tříd pomocí příkladů.

V Javě je výčet (zkratka pro výčet) typ, který má pevnou sadu konstantních hodnot. enumKlíčové slovo používáme k deklaraci výčtu. Například,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Zde jsme vytvořili výčet s názvem Velikost. Obsahuje pevné hodnoty MALÉ, STŘEDNÍ, VELKÉ a VNĚJŠÍ.

Tyto hodnoty uvnitř složených závorek se nazývají konstanty výčtu (hodnoty).

Poznámka: Konstanty výčtu jsou obvykle reprezentovány velkými písmeny.

Příklad 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); ) )

Výstup

 MALÉ STŘEDNÍ

Jak vidíme z výše uvedeného příkladu, pro přístup ke konstantním hodnotám používáme název výčtu.

Můžeme také vytvářet proměnné typů výčtu. Například,

 Size pizzaSize;

Zde je pizzaSize proměnná typu Size. Lze jej přiřadit pouze se 4 hodnotami.

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

Příklad 2: Java Enum s příkazem 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(); ) )

Výstup

 Objednal jsem si středně velkou pizzu.

Ve výše uvedeném programu jsme vytvořili typ výčtu Velikost. Poté jsme deklarovali proměnnou pizzaSize typu Size.

Proměnnou pizzaSize lze zde přiřadit pouze 4 hodnoty (SMALL, MEDIUM, LARGE, EXTRALARGE).

Všimněte si prohlášení,

 Test t1 = new Test(Size.MEDIUM);

Zavolá Test()konstruktor uvnitř třídy Test. Nyní je proměnná pizzaSize přiřazena konstantní STŘEDNÍ.

Na základě hodnoty se provede jeden z případů příkazu switch case.

Třída Enum v Javě

V Javě jsou typy výčtu považovány za speciální typ třídy. To bylo představeno s vydáním Java 5.

Třída výčtu může zahrnovat metody a pole stejně jako běžné třídy.

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

Když vytvoříme třídu výčtu, kompilátor vytvoří instance (objekty) každé konstanty výčtu. Všechny konstanty výčtu jsou také vždy public static finalve výchozím nastavení.

Příklad 3: Java Enum Class

 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()); ) )

Výstup

 Velikost pizzy je malá

Ve výše uvedeném příkladu jsme vytvořili třídu výčtu Velikost. Má čtyři konstanty MALÁ, STŘEDNÍ, VELKÁ a VNĚJŠÍ.

Vzhledem k tomu, že Size je třída výčtu, kompilátor automaticky vytváří instance pro každou konstantu výčtu.

Tady uvnitř main()metody jsme použili instanci SMALL k volání getSize()metody.

Poznámka : Stejně jako běžné třídy může i třída výčtu obsahovat konstruktory. Chcete-li se dozvědět více, navštivte konstruktor Java enum.

Metody třídy Java Enum

Ve třídách výčtu existuje několik předdefinovaných metod, které jsou snadno dostupné pro použití.

1. Java Enum ordinal ()

ordinal()Metoda vrací postavení jednoho výčtu konstanty. Například,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

compareTo()Metoda porovnává výčtu konstanty na základě jejich pořadové hodnoty. Například,

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

3. Enum toString ()

toString()Metoda vrací řetězec reprezentaci výčtu konstant. Například,

 SMALL.toString() // returns "SMALL"

4. Enum name ()

name()Metoda vrací definovaný název k výčtu konstanty v řetězci formě. Vrácená hodnota z name()metody je final. Například,

 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;

Zde je zaručeno, že proměnná bude obsahovat jednu ze čtyř hodnot. Nyní, když se pokusíme předat jiné hodnoty než tyto čtyři hodnoty, kompilátor vygeneruje chybu.

Zajímavé články...