Java enum & enum klass (koos näidetega)

Selles õpetuses õpime tundma Java-i loendeid. Õpime näidete abil loendama ja kasutama loendeid ja loendustunde.

Javas on enum (loenduse lühend) tüüp, millel on fikseeritud püsiväärtuste komplekt. Kasutame enummärksõna enumsummade deklareerimiseks. Näiteks,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Siin oleme loonud loendi nimega Suurus. See sisaldab fikseeritud väärtusi VÄIKE, KESKMINE, SUUR ja ÜLISALGE.

Neid breketite sees olevaid väärtusi nimetatakse loendikonstantideks (väärtusteks).

Märkus: loendikonstandid on tavaliselt kujutatud suurtähtedega.

Näide 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); ) )

Väljund

 VÄIKE KESKMINE

Nagu näeme ülaltoodud näitest, kasutame konstantväärtustele juurdepääsemiseks enum nime.

Samuti saame luua loenditüüpide muutujaid. Näiteks,

 Size pizzaSize;

Siin on pizzaSize muutuja tüüpi Suurus. Seda saab määrata ainult 4 väärtusega.

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

Näide 2: Java Enum koos lülitilausega

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

Väljund

 Tellisin keskmise suurusega pitsa.

Ülaltoodud programmis oleme loonud loenditüübi Size. Seejärel kuulutasime välja muutuva pizzaSize tüüpi suuruse.

Siin saab muutujale pizzaSize määrata ainult 4 väärtust (VÄIKE, KESKMINE, SUUR, VÄLISALA).

Pange tähele avaldust,

 Test t1 = new Test(Size.MEDIUM);

See kutsub Test()konstruktori testklassi sisse. Nüüd määratakse muutujale pizzaSize konstant MEDIUM.

Väärtuse põhjal täidetakse üks juhtumi juhtumi avalduse lülititest.

Enum klass Java keeles

Javas peetakse enumi tüüpe klassi eriliigiks. See võeti kasutusele koos Java 5 väljaandmisega.

Enum klass võib sisaldada meetodeid ja välju nagu tavalised klassid.

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

Kui loome loendiklassi, loob kompilaator iga loendikonstandi eksemplarid (objektid). Samuti on public static finalvaikimisi alati kogu loendikonstant .

Näide 3: Java Enum klass

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

Väljund

 Pitsa suurus on väike

Ülaltoodud näites oleme loonud loendiklassi Suurus. Sellel on neli konstandit VÄIKE, KESKMINE, SUUR ja ÜLISALGE.

Kuna Size on loendiklass, loob kompilaator iga loendikonstandi jaoks automaatselt eksemplarid.

Siin main()meetodi sees oleme getSize()meetodi kutsumiseks kasutanud eksemplari SMALL .

Märkus : Sarnaselt tavalistele klassidele võib ka enumi klass sisaldada konstruktoreid. Selle kohta lisateabe saamiseks külastage Java enumi konstruktorit.

Java Enum klassi meetodid

Enumi klassides on mõned eelnevalt määratletud meetodid, mis on kasutamiseks hõlpsasti kättesaadavad.

1. Java Enum ordinal ()

ordinal()Meetod tagastab positsiooni ENUMi konstantne. Näiteks,

 ordinal(SMALL) // returns 0

2. Enum võrrelge ()

compareTo()Meetod võrdleb enum konstandid, mis põhineb nende ordinal väärtus. Näiteks,

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

3. Enum toString ()

toString()Meetod tagastab stringi esitus enum konstandid. Näiteks,

 SMALL.toString() // returns "SMALL"

4. loendi nimi ()

name()Meetod tagastab määratletud nimi ENUMi konstantne string kujul. Meetodi tagastatud väärtus name()on final. Näiteks,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

valueOf()Meetod võtab stringi ja tagastab ENUMi pidevalt sama string nimi. Näiteks,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Loendi väärtused ()

values()Meetod tagastab massiivi enum tüüpi, mis sisaldab kõiki enum konstandid. Näiteks,

 Size() enumArray = Size.value();

Miks Java Enums?

Jaavas võeti kasutusele int konstantide kasutamise asemel enum .

Oletame, et oleme kasutanud intkonstantide kogu.

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

Siin tekib probleem, kui trükime konstandid. Sellepärast, et trükitakse ainult number, ei pruugi sellest abi olla.

Niisiis, int-konstandide kasutamise asemel võime lihtsalt kasutada enume'e. Näiteks,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

See muudab meie koodi intuitiivsemaks.

Samuti pakub enum kompileerimisaja tüüpi ohutust .

Kui kuulutame muutuja tüüpi Suurus. Näiteks,

 Size size;

Siin on tagatud, et muutuja hoiab ühte neljast väärtusest. Kui proovime edastada muid väärtusi kui need neli väärtust, tekitab kompilaator vea.

Huvitavad Artiklid...