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?
- Kodėl mums reikia surašymo?
- Skirtumai tarp „Enum“ ir klasės
- Praktiniai „Enum“ pavyzdžiai
- „Enum“ privalumai
- Enum Usecase: Rokas, Popierius, žirklių žaidimas
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)
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 pakeistos | Klasių konstantos gali būti nepaisomos |
„Enum“ nepalaiko objektų kūrimo | Klasės palaiko objektų kūrimą |
„Enum“ negali pratęsti kitų klasių | Klasė gali pratęsti kitas klases |
enum cpadargo sąsaja | Klasė 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“
- Enum naudojamas „Switch Case“
- Paveldėjimas naudojant enum
- Užrašykite su pritaikytomis reikšmėmis
- Aprašykite teiginiuose „jei-dar-jei“
- Skirtingi metodai, naudojami kartu su enum
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):
ką
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.