Java enum & enum Class (cu exemple)

În acest tutorial, vom afla despre enumeri în Java. Vom învăța să creăm și să folosim enumere și clase de enumere cu ajutorul exemplelor.

În Java, un enum (scurt pentru enumerare) este un tip care are un set fix de valori constante. Folosim enumcuvântul cheie pentru a declara enumere. De exemplu,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Aici, am creat un enum numit Size. Conține valori fixe MIC, MEDIU, MARE și EXTRALARGE.

Aceste valori din interiorul parantezelor sunt numite constante enum (valori).

Notă: Constantele enum sunt de obicei reprezentate cu majuscule.

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

Ieșire

 MIC MEDIU

După cum putem vedea din exemplul de mai sus, folosim numele enum pentru a accesa valorile constante.

De asemenea, putem crea variabile de tipuri enum. De exemplu,

 Size pizzaSize;

Aici, pizzaSize este o variabilă de tipul Size. Poate fi atribuit doar cu 4 valori.

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

Exemplul 2: Java Enum cu instrucțiunea 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(); ) )

Ieșire

 Am comandat o pizza de dimensiuni medii.

În programul de mai sus, am creat un tip enum Size. Apoi am declarat o pizza Dimensiune variabilă de tipul Size.

Aici, variabila pizzaSize poate fi atribuită doar cu 4 valori (MIC, MEDIU, MARE, EXTRALARGE).

Observați declarația,

 Test t1 = new Test(Size.MEDIUM);

Acesta va apela Test()constructorul din clasa Test. Acum, variabila pizzaSize este alocată constantei MEDIUM.

Pe baza valorii, se execută unul dintre cazurile declarației switch case.

Clasa Enum în Java

În Java, tipurile de enum sunt considerate a fi un tip special de clasă. A fost introdus odată cu lansarea Java 5.

O clasă enum poate include metode și câmpuri la fel ca clasele obișnuite.

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

Când creăm o clasă enum, compilatorul va crea instanțe (obiecte) ale fiecărei constante enum. De asemenea, toată constanta enum este întotdeauna public static finalimplicită.

Exemplul 3: Clasa 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()); ) )

Ieșire

 Dimensiunea pizza este mică

În exemplul de mai sus, am creat o clasă enum Size. Are patru constante MIC, MEDIU, MARE și EXTRALARGE.

Deoarece Size este o clasă enum, compilatorul creează automat instanțe pentru fiecare constantă enum.

Aici, în interiorul main()metodei, am folosit instanța SMALL pentru a apela getSize()metoda.

Notă : La fel ca clasele obișnuite, o clasă enum poate include și constructori. Pentru a afla mai multe despre aceasta, vizitați Java enum constructor.

Metode de clasă Java Enum

Există câteva metode predefinite în clasele enum care sunt ușor disponibile pentru utilizare.

1. Ordinal Java Enum ()

ordinal()Metoda returneaza poziția unei constante enum. De exemplu,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

compareTo()Metoda compară constantele enum pe baza valorii lor ordinală. De exemplu,

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

3. Enum toString ()

toString()Metoda returneaza reprezentarea string constantelor enum. De exemplu,

 SMALL.toString() // returns "SMALL"

4. Numele Enum ()

name()Metoda returnează numele definită a unei constante enum în formă șir. Valoarea returnată din name()metodă este final. De exemplu,

 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;

Aici, este garantat că variabila va deține una dintre cele patru valori. Acum, dacă încercăm să trecem alte valori decât acele patru valori, compilatorul va genera o eroare.

Articole interesante...