logo

Java Enums

The Enum Java kalba yra duomenų tipas, kuriame yra fiksuotas konstantų rinkinys.

Jis gali būti naudojamas savaitės dienomis (SEKMADIENIS, PIRMADIENIS, ANTRADIENIS, TREČIADIENIS, KETVIRTADIENIS, PENKTADIENIS ir ŠEŠTADIENIS), kryptimis (ŠIAURĖ, PIETUS, RYTAI ir VAKARAI), sezonui (PAVASARIS, VASARA, ŽIEMA ir RUDENS arba RUDENS) ), spalvos (RAUDONA, GELTONA, MĖLYNA, ŽALIA, BALTA ir JUODA) ir tt Pagal „Java“ pavadinimų susitarimus visos konstantos turėtų būti didžiosiomis raidėmis. Taigi, mes turime enum konstantas didžiosiomis raidėmis.

„Java Enums“ gali būti laikomas klasėmis, turinčiomis fiksuotą konstantų rinkinį (kintamąjį, kuris nesikeičia). Java enum konstantos yra statinės ir galutinės netiesiogiai. Jis pasiekiamas nuo JDK 1.5 versijos.

masyvo objektas java

Enumai naudojami savo duomenų tipui, pvz., klasėms, sukurti. The enum duomenų tipas (taip pat žinomas kaip išvardintų duomenų tipas) naudojamas Java enum apibrėžti. Skirtingai nuo C/C++, enum Java yra daugiau galingas . Čia galime apibrėžti enumą arba klasėje, arba už jos ribų.

Java Enum viduje paveldi Enum klasė , todėl jis negali paveldėti jokios kitos klasės, tačiau gali įdiegti daugybę sąsajų. „Java enum“ galime turėti laukus, konstruktorius, metodus ir pagrindinius metodus.

Taškai, kuriuos reikia atsiminti naudojant „Java Enum“.

  • Enum pagerina tipo saugumą
  • Enum gali būti lengvai naudojamas jungiklyje
  • Enum galima pereiti
  • Enum gali turėti laukus, konstruktorius ir metodus
  • Enum gali įdiegti daug sąsajų, bet negali išplėsti jokios klasės, nes išplečia Enum klasę
Java Enum taškai

Paprastas Java Enum pavyzdys

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Išbandykite dabar

Išvestis:

 WINTER SPRING SUMMER FALL 

Pažiūrėkime kitą Java enum pavyzdį, kuriame naudojame Java enum metodus value (), valueOf () ir ordinal ().

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Išvestis:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Pastaba: Kompiliavimo metu Java kompiliatorius viduje prideda reikšmes(), valueOf() ir ordinal() metodus enum viduje. Jis viduje sukuria statinę ir galutinę enum klasę.

Koks yra value() metodo tikslas sąraše?

„Java“ kompiliatorius, kurdamas sąrašą, viduje prideda value() metodą. Metodas Values() grąžina masyvą, kuriame yra visos enum reikšmės.

Koks yra valueOf() metodo tikslas sąraše?

„Java“ kompiliatorius viduje prideda valueOf() metodą, kai sukuria sąrašą. Metodas valueOf() grąžina nurodytos pastovios enum reikšmę.

Koks yra eilės () metodo tikslas sąraše?

„Java“ kompiliatorius viduje prideda ordinal() metodą, kai sukuria sąrašą. Metodas Ordinal() grąžina enum reikšmės indeksą.

eilutė iki sveikojo skaičiaus

„Java Enum“ apibrėžimas

Enum gali būti apibrėžtas klasėje arba už jos ribų, nes jis panašus į klasę. Kabliataškis (;) sąrašo konstantų pabaigoje yra neprivalomas. Pavyzdžiui:

 enum Season { WINTER, SPRING, SUMMER, FALL } 

arba

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Abu „Java enum“ apibrėžimai yra vienodi.

Java Enum pavyzdys: apibrėžta už klasės ribų

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Išbandykite dabar

Išvestis:

 WINTER 

Java Enum pavyzdys: apibrėžta klasėje

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Išbandykite dabar

Išvestis:

vietos data
 WINTER 

Java Enum pavyzdys: pagrindinis metodas Enum viduje

Jei į enum įdėsite metodą main(), galite jį paleisti tiesiogiai.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Išvestis:

 WINTER 

Konkrečių verčių inicijavimas į enum konstantas

Eenum konstantos turi pradinę reikšmę, kuri prasideda nuo 0, 1, 2, 3 ir pan. Tačiau mes galime inicijuoti konkrečią enum konstantų reikšmę, apibrėždami laukus ir konstruktorius. Kaip nurodyta anksčiau, Enum gali turėti laukus, konstruktorius ir metodus.

Pradinės vertės enum konstantoms nurodymo pavyzdys

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Išbandykite dabar

Išvestis:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Enum tipo konstruktorius yra privatus. Jei nedeklaruojate privataus kompiliatoriaus viduje, sukuria privatų konstruktorių.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Kompiliatoriaus sugeneruotas vidinis kodas aukščiau pateiktam enum tipo pavyzdžiui

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Ar galime sukurti Enum egzempliorių pagal naują raktinį žodį?

Ne, nes jame yra tik privatūs konstruktoriai.

Ar galime Enum turėti abstraktų metodą?

Taip, žinoma! galime turėti abstrakčius metodus ir pateikti šių metodų įgyvendinimą.


Java Enum jungiklio sakinyje

Galime taikyti enum jungiklio sakinyje, kaip pateiktame pavyzdyje:

Enum taikymo jungiklio sakinyje pavyzdys

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Išbandykite dabar

Išvestis:

 monday