Java enum & enum klasa (s primjerima)

U ovom uputstvu naučit ćemo o enumima u Javi. Naučit ćemo stvarati i koristiti enume i enum klase uz pomoć primjera.

U Javi je enum (skraćenica od enumeration) vrsta koja ima fiksni skup konstantnih vrijednosti. enumKljučnu riječ koristimo za deklariranje nabrajanja. Na primjer,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Ovdje smo stvorili nabrajanje pod nazivom Size. Sadrži fiksne vrijednosti SMALL, SREDNJE, VELIKO i EXTRALARGE.

Te vrijednosti unutar zagrada nazivaju se enum konstantama (vrijednostima).

Napomena: Konstante nabrajanja obično su predstavljene velikim slovom.

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

Izlaz

 MALI SREDNJI

Kao što vidimo iz gornjeg primjera, koristimo ime enum za pristup konstantnim vrijednostima.

Također, možemo stvoriti varijable enum tipova. Na primjer,

 Size pizzaSize;

Ovdje je pizzaSize varijabla tipa Size. Može se dodijeliti samo s 4 vrijednosti.

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

Primjer 2: Java Enum s naredbom 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(); ) )

Izlaz

 Naručio sam pizzu srednje veličine.

U gore navedenom programu stvorili smo enum tip Size. Zatim smo proglasili varijabilnu veličinu pizzaSize tipa Size.

Ovdje se varijabli pizzaSize može dodijeliti samo 4 vrijednosti (SMALL, SREDNJA, VELIKA, EXTRALARGE).

Primijetite izjavu,

 Test t1 = new Test(Size.MEDIUM);

Pozvat će Test()konstruktor unutar klase Test. Sada je varijabli pizzaSize dodijeljena SREDNJA konstanta.

Na temelju vrijednosti izvršava se jedan od slučajeva naredbe prekidača.

Enum klasa u Javi

U Javi se tipovi enum smatraju posebnom vrstom klase. Predstavljen je izdanjem Jave 5.

Enum klasa može uključivati ​​metode i polja baš kao i redovne klase.

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

Kada kreiramo enum klasu, kompajler će stvoriti instance (objekte) svake enum konstante. Također, sva enum konstanta uvijek public static finalje zadana.

Primjer 3: Java Enum klasa

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

Izlaz

 Veličina pizze je mala

U gornjem primjeru stvorili smo enum klasu Size. Ima četiri konstante MALI, SREDNJI, VELIKI i VELIKI.

Budući da je Veličina enumska klasa, prevoditelj automatski stvara instance za svaku konstantu enum.

Ovdje unutar main()metode koristili smo instancu SMALL za pozivanje getSize()metode.

Napomena : Poput redovite klase, enum klasa također može sadržavati konstruktore. Da biste saznali više o tome, posjetite Java enum constructor.

Metode klase Java Enum

Postoje neke unaprijed definirane metode u enum klasama koje su lako dostupne za upotrebu.

1. Java Enum redni ()

ordinal()Metoda vraća na poziciju nekog nabrajanja konstanta. Na primjer,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

compareTo()Metoda uspoređuje konstante nabrajanja na temelju njihove rednim vrijednosti. Na primjer,

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

3. Enum toString ()

toString()Metoda vraća string konstante nabrajanja. Na primjer,

 SMALL.toString() // returns "SMALL"

4. Ime popisa ()

name()Metoda vraća definiran ime nekog nabrajanja konstanta u string obliku. Vraćena vrijednost iz name()metode je final. Na primjer,

 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;

Ovdje je zajamčeno da će varijabla sadržavati jednu od četiri vrijednosti. Ako pokušamo proslijediti vrijednosti koje nisu te četiri vrijednosti, kompajler će generirati pogrešku.

Zanimljivi članci...