Java programoje Enumerations arba Java Enum tarnauja tam, kad programavimo kalba pavaizduotų įvardytų konstantų grupę. „Java Enums“ naudojami, kai kompiliavimo metu žinome visas galimas reikšmes, pvz., meniu pasirinkimus, apvalinimo režimus, komandų eilutės vėliavėles ir kt. Konstantų rinkinio enum tipo konstantų rinkinio nereikia visą laiką.
Kas yra Enumeration arba Enum Java?
„Java“ sąrašas yra klasės tipas. Nors mums nereikia kartoti enum naudojant naujas, jis turi tas pačias galimybes kaip ir kitos klasės. Dėl šio fakto „Java“ surašymas yra labai galingas įrankis. Kaip ir klasėms, galite suteikti joms konstruktorių, pridėti egzempliorių kintamuosius bei metodus ir netgi įdiegti sąsajas.
Enum pavyzdys:
4 kostiumai žaidimo kortų kaladėje gali būti 4 surašytojai, pavadinti Club, Diamond, Heart ir Spade, priklausantys išvardintam tipui, pavadintam Kostiumas. Kiti pavyzdžiai yra natūralūs išvardyti tipai (pvz., planetos, savaitės dienos, spalvos, kryptys ir kt.).
Vienas dalykas, kurį reikia turėti omenyje, yra tai, kad, skirtingai nei klasės, sąrašai nepaveldi kitų klasių ir negali būti išplėsti (ty tapti superklase). Taip pat prie jo galime pridėti kintamųjų, metodų ir konstruktorių. Pagrindinis sąrašo tikslas yra apibrėžti savo duomenų tipus (išvardintus duomenų tipus).
Enum deklaracija Java kalba
Enum deklaravimas gali būti atliktas ne klasėje arba klasėje, bet ne metodo viduje.
1. Deklaracija ne klasėje
Java
// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Išvestis
RED>
2. Deklaracija klasės viduje
Java
konvertuoti eilutę į interger
// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Išvestis
RED>
- Pirmoje sąrašo eilutėje turėtų būti konstantų sąrašas, o tada kiti dalykai, pvz., metodai, kintamieji ir konstruktoriai.
- Pagal Java pavadinimų sutartys , rekomenduojama konstantą pavadinti visomis didžiosiomis raidėmis
„Enum“ savybės „Java“.
Yra tam tikros savybės, po kurių nurodomas Enum, kaip nurodyta toliau:
- Kiekvienas enum yra įdiegtas viduje naudojant klasę.
- Kiekviena enum konstanta reiškia an objektas enum tipo.
- Enum tipas gali būti perduotas kaip argumentas jungiklis pareiškimus.
- Kiekviena enum konstanta visada yra netiesioginė viešas statinis finalas . Kadangi yra statinis , galime jį pasiekti naudodami sąrašo pavadinimą. Kadangi yra galutinis , negalime kurti vaikų sąrašų.
- Galime deklaruoti pagrindinis() metodas enumo viduje. Taigi enum galime iškviesti tiesiai iš komandų eilutės.
Žemiau pateikiamas pirmiau minėtų savybių įgyvendinimas:
Java
// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }> |
>
>
100 km/h iki mphIšvestis
Mondays are bad.>
Java Enum programos
1. Pagrindinė funkcija Enum viduje
Mes galime deklaruoti pagrindinę funkciją enum viduje, nes galime iškviesti enum tiesiai iš komandų eilutės.
Žemiau pateikiamas aukščiau nurodytos nuosavybės įgyvendinimas:
Java
// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }> |
>
>Išvestis
RED>
2. Pereikite per Enum
Galime kartoti Enum naudodami reikšmes ( ) ir kilpą. Values() funkcija grąžina Enum reikšmių masyvą kaip konstantas, kurias naudodami galime kartoti reikšmes.
Žemiau pateikiamas ciklo įgyvendinimas per Enum:
Java
// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }> |
>
>Išvestis
RED GREEN BLUE>
3. Įveskite eilutę perjungimo pareiškime
Java
// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }> |
>
>Išvestis
Other color observed>
Enum ir paveldėjimas
- Visi enumai netiesiogiai tęsiasi java.lang.Enum klasė . Kaip klasė gali tik pratęsti vienas pirminis Java, enum negali išplėsti nieko kito.
- toString() metodas yra nepaisoma java.lang.Enum klasė , kuris grąžina enum konstantos pavadinimą.
- enum gali įdiegti daugybę sąsajų.
Enum ir konstruktorius
- Enum gali turėti konstruktorių ir jis vykdomas atskirai kiekvienai enum konstantai enum klasės įkėlimo metu.
- Negalime aiškiai sukurti enum objektų, todėl negalime tiesiogiai iškviesti enum konstruktoriaus.
Enum ir metodai
Enum gali būti tiek betono metodai ir abstrakčiai metodus. Jei enum klasė turi abstraktų metodą, kiekvienas enum klasės egzempliorius turi jį įgyvendinti.
java eilutė
Java
// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }> |
>
>Išvestis
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
DUK apie Enum Java
Q1. Ar galime sukurti Enum egzempliorių pagal naują raktinį žodį?
Metai:
Ne, negalime sukurti Enum raktinio žodžio egzemplioriaus, nes jame yra tik privatūs konstruktoriai.
Q2. Ar galime Enum turėti abstraktų metodą?
Metai:
Taip, mes turime abstraktų metodą Enum.
Q3. Koks yra value() metodo tikslas sąraše?
Metai:
„Java“ sistemoje vertės( ) metodas gali būti naudojamas norint grąžinti visas reikšmes, esančias sąraše.
4 klausimas. Koks yra valueOf() metodo tikslas sąraše?
Metai:
Metodas valueOf() grąžina nurodytos eilutės reikšmės enum konstantą, jei tokia yra.
Q5. Koks yra eilės () metodo tikslas sąraše?
Metai:
Naudojant ordinal() metodą, galima rasti kiekvieną enum pastovų indeksą, kaip ir masyvo indeksą.
6 klausimas. Parašykite programą Java kalba, kuri apibūdintų value(), valueOf() ir ordinal() metodų naudojimą sąraše.
Metai:
IšvestisJava
// Java program to demonstrate working of values(),>// ordinal() and valueOf()>enum>Color {>>RED,>>GREEN,>>BLUE;>}>public>class>Test {>>public>static>void>main(String[] args)>>{>>// Calling values()>>Color arr[] = Color.values();>>// enum with loop>>for>(Color col : arr) {>>// Calling ordinal() to find index>>// of color.>>System.out.println(col +>' at index '>>+ col.ordinal());>>}>>// Using valueOf(). Returns an object of>>// Color with given constant.>>// Uncommenting second line causes exception>>// IllegalArgumentException>>System.out.println(Color.valueOf(>'RED'>));>>// System.out.println(Color.valueOf('WHITE'));>>}>}>>formato java eilutė>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Kitas straipsnis apie enumą: Enum su tinkinta verte Java