„Java Enum“ mokymo programa: kas tai yra ir kaip ją įgyvendinti?



Šis straipsnis apie „Java Enum“ mokymo programą suteiks jums išsamių žinių apie „Enum“ konstantas ir praktinių pavyzdžių, kad geriau suprastumėte.

Surašymas in yra būdas apibrėžti klasę su fiksuotomis ir pavadintomis konstantomis su atitinkamomis naudojant raktinį žodį enum. Šiame ' „Java Enum“ pamoka “Straipsnį, išmoksimeapibrėžti Surašymą kartu sugeresnio supratimo pavyzdžių.

Kas yra surašymas?

„Java Enums“ yra klasės, turinčios fiksuotą konstantų ar kintamųjų rinkinį, kurie nėra linkę keistis. „Java“ surašymas pasiekiamas naudojant raktinį žodį enum. „Java“ enum konstantos yra statinis ir galutinis netiesiogiai. „Enum“ funkcija galima nuo JDK 1.5 versija.





Kodėl mums reikia surašymo?

enum pagerina tipo saugą tikrinant kompiliavimo laiką, kad būtų išvengta klaidų vykdymo metu, išvengiant katilinės kodo. Pvz., Jei turite pasirinkti vieną galimybę iš mažiausiai galimų parinkčių, tarkime,

Darbas Tipas: (Sutartis / Laikinas / Nuolatinis)



„Java enum“ mokymo programos darbuotojas

Tada geriausias variantas būtų naudoti enum. Nes enum gali būti lengvai naudojamas jungiklyje. enum galima pereiti. enum gali turėti laukai, konstruktoriai ir metodai. Vadinasi, tai padidina kompiliavimo laiko patikrinimą ir išvengia klaidų dėl neteisingų konstantų perdavimo, nes jūs jau dokumentavote, kurios reikšmės yra teisėtos naudoti.

Skirtumai tarp „Enum“ ir klasės

Nors „Java“ aplinkoje klasė ir sąrašas yra panašūs, jie skiriasi keliais aspektais. Aptarkime skirtumus



Enum Klasė
Enum konstantos negali būti pakeistosKlasių konstantos gali būti nepaisomos
„Enum“ nepalaiko objektų kūrimoKlasės palaiko objektų kūrimą
„Enum“ negali pratęsti kitų klasiųKlasė gali pratęsti kitas klases
enum cpadargo sąsajaKlasė gali įdiegti sąsają


Praktiniai „Enum“ pavyzdžiai

Dabar, norėdami suprasti daug geriau, atlikime keletą praktinių pavyzdžių, pagrįstų toliau pateiktais pavyzdžiais.

Aprašymo apibrėžimas „Java“

Enumas gali būti paskelbtas klasėje arba už c ribųleisti. Bet to negalima deklaruoti jokiu metodu. Paimkime mažą pavyzdį, kad suprastume jo sintaksę, apibrėžimą ir deklaraciją.

Sintaksė:

enum vardas {konstantos}

Šiame pavyzdyje mes paskelbėme pagrindinis () metodas viduje enum

paketo apibrėžimas viešoji klasė „Edureka“ {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Ouputas

KTM

kaip rašyti skaitytuvą java

Šiame pavyzdyje pagrindinis () metodas yra deklaruojamas lauke enum.

paketo apibrėžimas enum Spalva {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

// Rezultatas:

YAMAHA

Enum naudojamas „Switch Case“

Aprašymas taip pat gali būti naudojamas jungiklio sakinyje. Svarbu, kad visuose atvejo sakiniuose turi būti naudojamos konstantos iš to paties sąrašo, kaip ir jungiklio sakinyje. Patikrinkime pagal tai pateiktą pavyzdį.

Čia mes paskelbsime enumą su savaitės dienomis kaip elementus ir perduosime duomenis eilutės forma, kad išspausdintume atitikimo atvejo duomenis.

paketas perjungtas, diena {SEKMADIENIS, PIRMADIENIS, ANTRADIENIS, TREČIADIENIS, KETVIRTADIENIS, PENKTADIENIS, ŠEŠTADIENIS} viešoji klasė „Edureka“ {dienos diena viešoji „Edureka“ (dienos diena) {this.day = diena} public void dayIsLike () {switch (diena) {atvejis PIRMADIENIS: „System.out.println“ („Sveiki, šiandien yra pirmadienis“) pertraukos atvejai ANTRADIENIS: „System.out.println“ („Labas, šiandien yra antradienis“) pertraukos TREČIADIEN: System.out.println („Sveiki, šiandien yra trečiadienis ') pertraukos atvejis KETVIRTADIENIS: System.out.println („Sveiki, šiandien yra ketvirtadienis“) pertraukos atvejis PENKTADIENIS: System.out.println („Sveiki, šiandien yra penktadienis“) pertraukos atvejis ŠEŠTADIENIS: System.out.println (' Sveiki, šiandien jūsų savaitgalis ') pertraukos atvejis SEKMADIENIS: System.out.println (' Sveiki, šiandien yra atostogos ') pertrauka pagal nutylėjimą: System.out.println (' Įveskite tinkamą dieną. ') Pertrauka}} public static void main (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}

// Rezultatas:

Sveiki, šiandien yraPirmadienis

Paveldėjimas naudojant enum

Iš esmės bet koks enum vaizduojama kaip klasė, pratęsianti abstrakčią klasę java.lang. Enum ir turi keletą statiškų narių. Todėl an enum negali pratęsti jokios kitos klasės ar enum nėra kelių palikimai . Vykdykime pavyzdį, kad jį geriau suprastume.

Čia mes paveldėsime OS pagal telefono gamintoją.

paketo paveldėjimas importuoti java.util.ArrayList importuoti java.util.List public class Edureka {public static void main (String [] args) {List paveldėti = new ArrayList () paveldėti.add (LibraryEnum.FIRST) paveldėti.add (ClientEnum). google) for (HTTPMethodConvertible element: paveldėti) {System.out.println (element.getHTTPMethodType ())}} statinė sąsaja HTTPMethodConvertible {public String getHTTPMethodType ()} statinė enum LibraryEnum įgyvendina HTTPMethodConvertible {FIRST '(FELST) „Huawei“), THIRD („Apple 11 Pro“) eilutė httpMethodType LibraryEnum (eilutės telefonas) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} statinė enum ClientEnum įgyvendina HTTPMethodConvertible {huawei ('Hong („iOS“), „Google“ („Android One“) eilutė httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

// Rezultatas:

„Google Pixel“
„Android One“

Užrašykite su pritaikytomis reikšmėmis

Pagal numatytuosius nustatymus „Enums“ turi savo eilutės reikšmes, taip pat galime priskirti kai kurias pasirinktines reikšmes „enums“. Panagrinėkime žemiau pateiktą pavyzdį.

enum Traffic {RED („STOP“), ORANZINIS („WAIT“), ŽALIAS („GO“)}

Ankstesniame pavyzdyje galime pamatyti, kad „Traffic enum“ turi tris narius. Būtent,

RAUDONA, APELSINAS ir ŽALIAS turi savo skirtingas pasirinktines vertes STABDYK, PALAUK ir EITI atitinkamai.

Dabar, norėdami naudoti to paties tipo „enum“ kodą, mes tikimės, kad laikysimės šių punktų:

  • Turime kurti parametruojamas konstruktorius šiai enum klasei. Nes mes tai žinome enum klasės objekto negalima aiškiai sukurti, todėl inicijavimui naudojame parametrizuotą konstruktorių.
  • statybininkas negali būti visuomenė ar saugoma privatus arba numatytas modifikatoriai. Jei sukursime viešus ar saugomus, tai leis inicijuoti kelis objektus, kurie yra visiškai prieš enum funkcionalumas.
  • Turime sukurti geresnį metodą, kad gautume jo vertę enums.

Vykdykime programą pagal tai.

paketo srauto apskaita „TrafficSignal“ {RED ('STOP'), ŽALIA ('GO'), ORANGE ('WAIT') privati ​​eilutė veiksmas public String getAction () {return this.action} privatus TrafficSignal (eilutės veiksmas) {this.action = veiksmas}} public class Edureka {public static void main (String args []) {TrafficSignal [] signalai = TrafficSignal.values ​​(), skirtas (TrafficSignal signalas: signalai) {System.out.println ('vardas:' + signalas.vardas () + 'action:' + signal.getAction ())}}}

// Rezultatas:

pavadinimas: RAUDONAS veiksmas: STOP
pavadinimas: ŽALIS veiksmas: EITI
Patinase: ORANGE veiksmas: PALAUKITE

Aprašykite teiginiuose „jei-dar-jei“

Dabar vykdykime programą remdamiesi surašyti teiginiuose „jei-dar-jei“. Čia mes rasime važiavimo kryptį, praleisdami galimų krypčių vertes.

paketas Nuorodos enum Kryptys {RYTAI, VAKARAI, ŠIAURĖ, PIETAI} viešoji klasė „Edureka“ {viešoji statinė tuštuma pagrindinė (String args []) {Kryptys dir = Nurodymai.ŠIAURIS if (dir == Nurodymai.RYTAS) {System.out.println ( 'Kryptis: rytai')} else if (dir == Nurodymai.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : Šiaurė ')} else {System.out.println (' Kryptis: Pietūs ')}}}

// Rezultatas:

Sakykantraštė: Šiaurė

Skirtingi metodai, naudojami kartu su enum

Vertybės (): Kai sukursite enum, Java kompiliatorius viduje prideda vertės () metodas. Šis metodas pateikia masyvas kuriame yra visos enumo reikšmės.

// Sintaksė:

viešosios statinės enum tipo [] reikšmės ()

Mes sužinosime tam tikro elemento masyvo indekso vertę.

paketo vertės enum Spalva {RED, GREEN, BLUE} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() for (Color col: arr) {System.out.println ( col + 'index' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

// Rezultatas:

maišos žemėlapio ir maišos lentelės skirtumas

RAUDONA prie indekso 0
ŽALI 1 rodyklėje
MĖLYNA 2 rodyklėje
NET

Vertė(): Taimetodas naudojamas grąžinti apskaitos konstantą, kurios vertė lygi perduotas kaip argumentas skambinant šiam metodui.

// Sintaksė:

public static enum-type value of (String str)

Čia rasime konkretaus telefono kainą, atsižvelgdami į įvestį, kurią perduodame eilutei.

„Mobile“ paketo vertės „Samsung“ („Samsung“ (1099), „Apple“ (1250), „Google“ (1325) „int price Mobile“ (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('CellPhone List:'), skirtas (Mobile m: Mobile.values ​​()) {System.out.println (m + 'kaštai' + m.showPrice () + 'doleriai' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Pasirinkta:' + ret)}}

// Rezultatas:

„Samsung“ kainuoja 1099 dolerius
„Apple“ kainuoja 1250 dolerių
„Google“ kainuoja 1325 dolerius
Pasirinkta: „Samsung“

Skaičius (): „Java“ vertėjas prideda eilinis () metodas viduje, kai jis sukuria enum. Ordinal () metodas pateikia indeksas enum vertės.

// Sintaksė:

viešojo finalo vidinis eilės numeris ()

Čia mes sužinosime tam tikro masyvo elemento indekso vertę. ir vyšnių vaisiaus padėtis.

Pakuotės eilės eilės vaisiai {Obuoliai, bananai, vyšnios, datos, šeivamedžio uogos} daržovės {morkos, burokėliai, pupelės, pomidorai, svogūnai} viešoji klasė „Edureka“ {public static void main (String [] args) {Fruits [] fru = Fruits. reikšmės () reikšmei (Fruits fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Vaisiai f1, f2, f3 f1 = Vaisiai. Obuolys f2 = Vaisiai. Vyšnia f3 = Vaisiai. Obuolys if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'ateina po' + f1)} Daržovės v1 = Daržovės. Raudonoji šakniastiebis, jei (f1.equals (v1)) {System.out.println (' Neteisinga ')}}}

// Rezultatas:

„Apple“: 0
Bananas: 1
Vyšnia: 2
Data: 3
Šeivamedis: 4
Vyšnia ateina po „Apple“

„Enum“ privalumai

  • „Enum Java“ pagerėja tipo saugumas
  • „Enum“ sukurtas taip, kad jį būtų lengva naudoti perjungti bylas
  • Enumas gali būti kirto
  • Enumas gali turėti laukai, metodai, ir konstruktoriai
  • Enumas gali įgyvendinti sąsajos
  • Enumas negali pratęsti a klasė nes viduje jis tęsiasi Enum klasė

Enum Usecase: Rokas, popierius, žirklių žaidimas

Mes naudosimės enum „Java“ sukurti mūsų vaikystės žaidimą, akmens (akmens) popierius ir žirklės . Šis kodas paaiškina, kaip tai padaryti.

paketas „Edureka“ importas java.util.Random importuoti java.util.Scanner enum „HandSign“ {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () Boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Skaitytuvas = naujas skaitytuvas (System.in) System.out.println ('nPradėkime ... n'), o (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') Boolean validInput do {System.out.print ('nJūsų eilė (Įveskite s, jei norite žirklę, p - popierius, t, akmuo, q mesti): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' 'q') {gameOver = true} else if (inChar == 's') ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} dar {System.out.println ( 'nPrašau patikrinti įvestį ir bandyti dar kartą! n') validInput = false}}, kol (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt mano eilė: SCISSORn')} dar jei (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('n' s mano eilė: PAPERn ')} kita {computerMove = HandSign.STONE System.out.println (' nIr mano eilė: STONEn ')} jei (computerMove = = playerMove) {System.out.println ('nTai lygus! n') ++ numTie} dar jei (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor pjauna popierių , Laimėjau! N ') ++ numComputerWon} dar, jei (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper apvynioja akmenį, aš laimėjau! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone sulaužo žirklę, aš laimėjau! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Jūs laimėjote! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% n Bandymų skaičius: '+ numTrials) System.out.printf (' Aš laimėjau% d (%. 2f %%) . Jūs laimėjote% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Iki pasimatymo, tikiuosi, kad jums patiko ..! ' )}}

// Rezultatas:

Pradėkime ...
Žirklinis-popierinis-akmeninis
Jūsų eilė (Prašome įvesti s, jei norite žirklės, p - popieriaus, t - akmens, q, kad išeitumėte):
s
Atėjo mano eilė: AKMUO
Akmuo laužo žirkles, aš laimėjau!
Žirklinis-popierinis-akmeninis
Jūsų eilė (Prašome įvesti s, jei norite žirklės, p - popieriaus, t - akmens, q, kad išeitumėte):

Tyrimų skaičius: 1A laimėjau 1 (100,00%). Jūs laimėjote 0 (0,00%).
Iki pasimatymo! Tikiuosi, kad patiko ..!

Tuo mes baigėme šią „Java Enum“ mokymo programą. Tikiuosi, kad supratote „Java“ „Enum“ ir jo įgyvendinimą pateikdami keletą realaus laiko pavyzdžių.

Dabar, kai supratai enum pagrindinius dalykus naudodamiesi šia „Java Enum Tutorial“, patikrinkite sukūrė „Edureka“ - patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai skirti studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindines ir pažangesnes „Java“ koncepcijas kartu su įvairiomis „Java“ sistemomis, pvz. Pavasaris .

Turite mums klausimą? Paminėkite tai šio „Java Enum Tutorial“ tinklaraščio komentarų skyriuje ir mes kuo greičiau susisieksime su jumis.