Trieda Java enum & enum (s príkladmi)

V tomto tutoriále sa dozvieme o enumoch v Jave. Naučíme sa vytvárať a používať enumy a enum triedy pomocou príkladov.

V Jave je enum (skratka pre enumeráciu) typ, ktorý má pevnú sadu konštantných hodnôt. enumKľúčové slovo používame na vyhlásenie enumov. Napríklad,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Tu sme vytvorili výčet s názvom Veľkosť. Obsahuje pevné hodnoty MALÉ, STREDNÉ, VEĽKÉ a VEĽKÉ.

Tieto hodnoty vo vnútri zátvoriek sa nazývajú konštanty výčtu (hodnoty).

Poznámka: Konštanty výčtu sú zvyčajne zastúpené veľkými písmenami.

Prí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ýkon

 MALÉ STREDNÉ

Ako vidíme z vyššie uvedeného príkladu, na získanie konštantných hodnôt používame meno enum.

Môžeme tiež vytvárať premenné typov enum. Napríklad,

 Size pizzaSize;

PizzaSize je premenná typu Size. Môže byť priradený iba k 4 hodnotám.

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

Príklad 2: Java Enum s príkazom 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ýkon

 Objednal som si stredne veľkú pizzu.

Vo vyššie uvedenom programe sme vytvorili typ enum Veľkosť. Potom sme deklarovali premennú pizzaSize typu Size.

Premennú pizzaSize je možné priradiť iba k 4 hodnotám (MALÁ, STREDNÁ, VEĽKÁ, VNÚTORNÁ).

Všimnite si vyhlásenie,

 Test t1 = new Test(Size.MEDIUM);

Zavolá Test()konštruktora vnútri triedy Test. Teraz je premennej pizzaSize priradená konštanta MEDIUM.

Na základe hodnoty sa vykoná jeden z prípadov príkazu switch case.

Trieda Enum v jazyku Java

V Jave sa typy enum považujú za špeciálny typ triedy. Bolo to predstavené s vydaním Java 5.

Trieda enum môže obsahovať metódy a polia rovnako ako bežné triedy.

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

Keď vytvoríme triedu enum, kompilátor vytvorí inštancie (objekty) každej konštanty enum. Celá konštanta enum je tiež vždy public static finalpredvolená.

Príklad 3: Trieda 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()); ) )

Výkon

 Veľkosť pizze je malá

Vo vyššie uvedenom príklade sme vytvorili triedu enum Veľkosť. Má štyri konštanty MALÁ, STREDNÁ, VEĽKÁ a VEĽKÁ.

Pretože Size je trieda enum, kompilátor automaticky vytvára inštancie pre každú konštantu enum.

Tu vo vnútri main()metódy sme použili inštanciu MALÉ na volanie getSize()metódy.

Poznámka : Rovnako ako bežné triedy, aj trieda enum môže obsahovať konštruktory. Ak sa o tom chcete dozvedieť viac, navštívte konštruktor Java enum.

Metódy triedy Java Enum

V triedach enum existuje niekoľko preddefinovaných metód, ktoré sú ľahko dostupné na použitie.

1. Java Enum ordinal ()

ordinal()Metóda vracia postavenie jedného zoznamu konštanty. Napríklad,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

compareTo()Metóda porovnáva výpočtu konštanty na základe ich poradové hodnoty. Napríklad,

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

3. Enum toString ()

toString()Metóda vracia reťazec reprezentáciu zoznamu konštánt. Napríklad,

 SMALL.toString() // returns "SMALL"

4. Enum name ()

name()Metóda vracia definovaný názov k zoznamu konštanty v reťazci forme. Vrátená hodnota z name()metódy je final. Naprí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;

Tu je zaručené, že premenná bude obsahovať jednu zo štyroch hodnôt. Teraz, ak sa pokúsime odovzdať iné hodnoty ako tieto štyri, kompilátor vygeneruje chybu.

Zaujímavé články...