Јава енум и енум класа (са примерима)

У овом упутству ћемо научити о енумима у Јави. Научићемо да креирамо и користимо енуме и енум класе уз помоћ примера.

У Јави је енум (скраћеница од енумератион) тип који има фиксни скуп константних вредности. Користимо enumкључну реч за декларисање набрајања. На пример,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Овде смо креирали набрајање по имену Сизе. Садржи фиксне вредности СМАЛЛ, МЕДИУМ, ЛАРГЕ и ЕКСТРАЛАРГЕ.

Те вредности унутар заграда називају се енум константама (вредностима).

Напомена: Константе набрајања су обично представљене великим словом.

Пример 1: Јава Енум

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

Оутпут

 МАЛИ СРЕДЊИ

Као што видимо из горњег примера, користимо име енум за приступ константним вредностима.

Такође, можемо креирати променљиве енум типова. На пример,

 Size pizzaSize;

Овде је пиззаСизе променљива типа Сизе. Може се доделити само са 4 вредности.

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

Пример 2: Јава Енум са наредбом свитцх

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

Оутпут

 Наручио сам пицу средње величине.

У горе наведеном програму креирали смо енум тип Сизе. Затим смо прогласили променљиву пиззаСизе типа Сизе.

Овде се променљивој пиззаСизе може доделити само 4 вредности (СМАЛЛ, СРЕДЊА, ВЕЛИКА, ЕКСТРАЛАРГЕ).

Обратите пажњу на изјаву,

 Test t1 = new Test(Size.MEDIUM);

Позваће Test()конструктор унутар класе Тест. Сада је променљивој пиззаСизе додељена СРЕДЊА константа.

На основу вредности извршава се један од случајева наредбе прекидача.

Енум класа у Јави

У Јави се типови енум сматрају посебним типом класе. Представљен је издањем Јаве 5.

Енум класа може укључивати методе и поља баш као и редовне класе.

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

Када креирамо енум класу, компајлер ће креирати инстанце (објекте) сваке енум константе. Такође, сва енум константа је увек public static finalподразумевано.

Пример 3: Јава Енум Цласс

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

Оутпут

 Величина пице је мала

У горњем примеру смо креирали енум класу Сизе. Има четири константе МАЛИ, СРЕДЊИ, ВЕЛИКИ и ВЕЛИКИ.

Пошто је Сизе класа набрајања, компајлер аутоматски креира инстанце за сваку константу набрајања.

Овде унутар main()методе користили смо инстанцу СМАЛЛ за позивање getSize()методе.

Напомена : Као и редовне класе, и енум класа може садржати конструкторе. Да бисте сазнали више о томе, посетите Јава енум цонструцтор.

Методе класе Јава Енум

Постоје неке предефинисане методе у енум класама које су лако доступне за употребу.

1. Јава Енум редни ()

ordinal()Метод враћа позицију на енум константе. На пример,

 ordinal(SMALL) // returns 0

2. Енум цомпареТо ()

compareTo()Метод упоређује ЕНУМ константе на основу њихове редним вредности. На пример,

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

3. Енум тоСтринг ()

toString()Метод враћа заступљеност стринг на енум константи. На пример,

 SMALL.toString() // returns "SMALL"

4. Име и презиме ()

name()Метод враћа дефинисану име једног енум константе у стринг облику. Враћена вредност из name()методе је final. На пример,

 name(SMALL) // returns "SMALL"

5. Јава Енум валуеОф ()

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;

Овде је загарантовано да ће променљива садржати једну од четири вредности. Ако покушамо да проследимо вредности које нису те четири вредности, преводилац ће генерисати грешку.

Занимљиви Чланци...