Java enum & enum osztály (példákkal)

Ebben az oktatóanyagban megismerkedhetünk a Java-s enumokkal. Megtanulunk példák segítségével enumokat és enum osztályokat létrehozni és használni.

A Java-ban az enum (rövidítés a felsoroláshoz) egy olyan típus, amely állandó állandó értékekkel rendelkezik. A enumkulcsszót használjuk az összegek bejelentésére. Például,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Itt létrehoztunk egy Size nevű enumot. Rögzített értékeket tartalmaz: KIS, KÖZEPES, NAGY és EXTRALARGE.

Ezeket a zárójeleken belüli értékeket enum konstansoknak (értékeknek) nevezzük.

Megjegyzés: Az enum állandókat általában nagybetűvel ábrázolják.

1. példa: 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); ) )

Kimenet

 KIS közepes

Amint a fenti példából láthatjuk, az enum nevet használjuk az állandó értékek eléréséhez.

Ezenkívül létrehozhatunk enum típusú változókat. Például,

 Size pizzaSize;

Itt a pizzaSize a Size típusú változó. Csak 4 értékkel rendelhető hozzá.

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

2. példa: Java Enum a switch utasítással

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

Kimenet

 Rendeltem egy közepes méretű pizzát.

A fenti programban létrehoztunk egy enum típust Size. Ezután deklaráltuk a Size típusú változó pizzaSize méretet.

Itt a pizzaSize változó csak 4 értékkel rendelhető hozzá (SMALL, MEDIUM, LARGE, EXTRALARGE).

Figyelje meg az állítást,

 Test t1 = new Test(Size.MEDIUM);

Meghívja a Test()konstruktort a Test osztályon belül. Most a pizzaSize változó a MEDIUM konstanshoz van rendelve.

Az érték alapján a switch case utasítás egyik esete végrehajtásra kerül.

Enum osztály Java-ban

A Java-ban az enum típusokat speciális osztálytípusnak tekintik. A Java 5 kiadásával vezették be.

Az enum osztály a szokásos osztályokhoz hasonlóan tartalmazhat módszereket és mezőket.

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

Amikor létrehozunk egy enum osztályt, a fordító létrehozza az egyes enum konstansok példányait (objektumait). Ezenkívül az összes enum konstans mindig public static finalalapértelmezett.

3. példa: Java Enum osztály

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

Kimenet

 A pizza mérete kicsi

A fenti példában létrehoztunk egy enum osztály Size-ot. Négy állandója van: KIS, KÖZEPES, NAGY és EXTRÁLIS.

Mivel a Size egy enum osztály, a fordító automatikusan létrehoz példányokat minden enum konstanshoz.

A main()módszer belsejében a SMALL példányt használtuk a getSize()metódus meghívására .

Megjegyzés : A szokásos osztályokhoz hasonlóan az enum osztály tartalmazhat konstruktorokat is. Ha többet szeretne megtudni róla, keresse fel a Java enum konstruktort.

A Java Enum osztály módszerei

Az enum osztályokban vannak előre definiált módszerek, amelyek könnyen használhatók.

1. Java Enum sorszám ()

A ordinal()módszer egy enum konstans helyzetét adja vissza. Például,

 ordinal(SMALL) // returns 0

2. Enum CompareTo ()

A compareTo()módszer összehasonlítja az enum állandókat sorszámuk alapján. Például,

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

3. Enum toString ()

A toString()metódus az enum konstansok karakterlánc ábrázolását adja vissza. Például,

 SMALL.toString() // returns "SMALL"

4. Enum neve ()

A name()módszer egy enum konstans megadott nevét adja vissza string formában. A visszaadott érték a name()módszer final. Például,

 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;

Itt garantált, hogy a változó megtartja a négy érték egyikét. Most, ha megpróbálunk átadni a négy értéktől eltérő értékeket, a fordító hibát generál.

érdekes cikkek...