Java enum & enum клас (с примери)

В този урок ще научим за изброяванията в Java. Ще се научим да създаваме и използваме enum и enum класове с помощта на примери.

В Java enum (съкращение от enumeration) е тип, който има фиксиран набор от постоянни стойности. Използваме enumключовата дума за деклариране на изброявания. Например,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Тук създадохме изброяване на име Размер. Той съдържа фиксирани стойности МАЛКИ, СРЕДНИ, ГОЛЯМИ и ИЗКЛЮЧИТЕЛНИ.

Тези стойности в скобите се наричат ​​enum константи (стойности).

Забележка: Константите на изброяването обикновено са представени с главни букви.

Пример 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); ) )

Изход

 МАЛКА СРЕДНА

Както виждаме от горния пример, ние използваме името на изброяването за достъп до стойностите на константата.

Също така можем да създаваме променливи от типове enum. Например,

 Size pizzaSize;

Тук pizzaSize е променлива от типа Size. Може да се присвои само с 4 стойности.

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

Пример 2: Java Enum с оператора за превключване

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

Изход

 Поръчах пица със среден размер.

В горната програма създадохме тип преброяване Size. След това декларирахме променлива pizzaSize от типа Size.

Тук променливата pizzaSize може да бъде присвоена само с 4 стойности (МАЛКА, СРЕДНА, ГОЛЯМА, ИЗКЛЮЧИТЕЛНА).

Забележете изявлението,

 Test t1 = new Test(Size.MEDIUM);

Той ще извика Test()конструктора в класа Test. Сега променливата pizzaSize се присвоява със СРЕДНАТА константа.

Въз основа на стойността се изпълнява един от случаите на оператора за превключване.

Клас Enum в Java

В Java типовете enum се считат за специален тип клас. Той беше представен с пускането на Java 5.

Класът enum може да включва методи и полета, точно както обикновените класове.

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

Когато създаваме enum клас, компилаторът ще създава екземпляри (обекти) на всяка константа на enum. Също така, всички enum константи винаги са public static finalпо подразбиране.

Пример 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()); ) )

Изход

 Размерът на пицата е малък

В горния пример създадохме enum клас Size. Той има четири константи МАЛКИ, СРЕДНИ, ГОЛЯМИ и ИЗКЛЮЧИТЕЛНИ.

Тъй като Size е enum клас, компилаторът автоматично създава екземпляри за всяка константа на enum.

Тук вътре в main()метода използвахме екземпляра SMALL за извикване на getSize()метода.

Забележка : Подобно на обикновените класове, enum клас също може да включва конструктори. За да научите повече за това, посетете Java enum constructor.

Методи на Java Enum Class

Има някои предварително дефинирани методи в enum класове, които са лесно достъпни за използване.

1. Java Enum подреден ()

В ordinal()метода връща позицията на постоянен ENUM. Например,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

В compareTo()метода сравнява константи ENUM въз основа на тяхната поредност стойност. Например,

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

3. Enum toString ()

В toString()метода връща низа представителството на константите на ENUM. Например,

 SMALL.toString() // returns "SMALL"

4. Име на преброяване ()

В name()метода връща определено име на константа ENUM в низ форма. Върнатата стойност от name()метода е final. Например,

 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;

Тук е гарантирано, че променливата ще съдържа една от четирите стойности. Сега, ако се опитаме да предадем стойности, различни от тези четири стойности, компилаторът ще генерира грешка.

Интересни статии...