JavaRush /Java Blog /Random-TK /Java-da Enum bilen baglanyşykly 15 dörediji söhbetdeşlik ...
Treefeed
Dereje

Java-da Enum bilen baglanyşykly 15 dörediji söhbetdeşlik soraglary (Jogaplar bilen!)

Toparda çap edildi
Enumeration ( Enum ) Java 5 -de girizildi we şondan bäri Java döredijileriniň arasynda meşhur boldy. Dürli Java programmalarynda giňden ulanylýar. Java-daky Enum C ýa-da C ++ bilen deňeşdirilende has köptaraply bolany üçin, köp gyzykly ulanylyş ýagdaýlaryny hem görkezýär, bularyň ikisini Java-da Enum ulanmagyň 10 usuly . Emma bu meşhurlyga garamazdan, Java programmaçylarynyň köpüsi Enum tarapyndan üpjün edilýän funksiýadan we Enum-y Java kodunda ulanmagyň çylşyrymlylygyndan bihabar. Bu, mysal üçin, Enumyň Java-da interfeýs ýerine ýetirmek ukyby ýa-da Enumy Enumyň daşyndan gyssagly edip bilmeýändigimiz barada soraýan birnäçe okyjydan belli boldy , söhbetdeşlikde bu barada soralandyklaryny aýtdy. Bu , Java Enum-da ýygy-ýygydan soralýan soraglaryň sanawyny düzmäge ruhlandyrdy , bu diňe bir söhbetdeşliklerde üstünlik gazanmaga kömek etmän, eýsem öwrenmek üçin täze ýollary açýar. Öň bellenip geçilişi ýaly, köplenç söhbetdeşlik soraglary mowzugy has çynlakaý kabul etmäge mejbur edýär, bu erbet zat däl we Enumyň güýjüni we peýdalylygyny göz öňünde tutup, enum ussady bolmagyň wagty geldi. Aşakda Enumyň dürli işleýşine we häsiýetlerine esaslanýan soraglaryň sanawy. Söhbetdeşlik üçin taýýarlyk materialy ýa-da sanamak üçin gollanma hökmünde ulanyp bilersiňiz. Java-da täze bolsaňyz, Enum hakda köp täze we peýdaly zatlar öwrenersiňiz. 1) Enum Java-da interfeýs amala aşyryp bilermi? Hawa, Enum interfeýsleri miras alyp biler . Enum görnüşi synpa we interfeýs bilen meňzeşligi sebäpli , interfeýsi miras alyp biler. Bu, Enum-y käbir ýagdaýlarda adaty ýerine ýetiriş hökmünde ulanmakda ajaýyp çeýeligi üpjün edýär. Ine, bu mümkinçilikde Enum ulanmagyň gowy mysaly. 2) Enum synpy miras alyp bilermi? , Ok, edip bilmeýär! Garaşylmadyk, sebäbi öň Enum görnüşiniň Java-daky synpa ýa-da interfeýsine meňzeýändigi aýdylýar. Dogrusy, bu soragyň öňki soragdan soň berilmeginiň esasy sebäbi şu. Enum eýýäm java.lang.Enum abstrakt synpyndan miras galanlygy sebäpli , Java birnäçe synp mirasyny goldamaýandygy sebäpli başga bir synpyň miras alyp bilmejekdigi aýdyňdyr. Java.lang.Enum- dan miras almak bilen , ähli sanlarda tertipli () , bahalar () ýa-da valueOf () usullary bar . 3) Obýekt mysallary bolmazdan Enumy nädip döretmeli? Bu düzüliş ýalňyşlygy bolmazdan mümkinmi? Bu, söhbetdeşleriň halaýan şol kyn soraglaryndan biridir . Enum, hepdäniň günleri ýa-da ýylyň aýlary ýaly belli bir mukdarda obýektleriň ýygyndysy hökmünde görülýändigi sebäpli, Enumy hiç zat almazdan şübheli görünýär. Yesöne hawa, mysallar bolmasa , mysal üçin peýdaly synp döredip, Enum döredip bilersiňiz . Enum ulanmagyň ýene bir täzeçillik usuly: 4) Enum üçin toString () usulyny ýok edip bilerismi? Üstümizden çykarmasak näme bolýar? Elbetde, Enumyň toString () usulyny ýok edip bilersiňiz, sebäbi java.lang.Object miras galan we toString () usuly bar bolan islendik synpy ýok edip bilersiňiz , abstrakt bolany üçin hiç zat ýitirmersiňiz Enum synpynyň binýady muny siziň üçin eder we Enum mysalynyň ady bolan ady yzyna gaýtaryp berer. Ine, Enum synpyndan toString () usulynyň kody : düzüjiniň , Enum synpynyň özünde bir mysal döretmegine jogap hökmünde enum döretmek üçin kod bölüp bermegi, şeýle hem konstruktorda ordinal döretmek bilen kesgitlenýär. java.lang.Enum synpy : Enum döretmek üçin ýeke-täk konstruktor , programmada Enumyň yglan edilmegine jogap hökmünde düzüji tarapyndan çagyrylýar. 5) Enumyň daşynda bir Enumy derrew goýup bilerismi? Näme üçin beýle däl? Enumyň çäginden daşarda bir Enumy derrew goýup bilmersiňiz, sebäbi Enumyň köpçüligi ýok public enum MessageUtil{ ; // required to avoid compiler error, also signifies no instance public static boolean isValid() { throw new UnsupportedOperationException("Not supported yet."); } } public String toString() { return name; } protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } konstruktor we düzüji size şeýle konstruktor bilen tanyşdyrmaga mümkinçilik bermez. Düzediji Enum görnüşiniň deklarasiýasyna jogap hökmünde köp kod döredýändigi sebäpli, Enumyň içindäki köpçülikleýin gurluşykçylara Enum mysallaryny içerde yglan etmäge mejbur edýär . 6) Enumyň içinde konstruktor kesgitläp bilerismi? Bu sorag köplenç öňki soraga esaslanýar. Hawa, başararsyňyz, ýöne munuň diňe hususy ýa -da paketli hususy gurluşykçylar bilen mümkindigini ýadyňyzdan çykarmaň. Jemgyýetçilik we goragly gurluşykçylara Enumda rugsat berilmeýär. Bu ýerde bir mysal görüp bilersiňiz. 7) Enumy == ýa-da deň () usuly bilen deňeşdirmegiň arasynda näme tapawut bar? Bu ýerde gaty giňişleýin we çylşyrymly mesele . 8) Enumda ordinal () usuly näme edýär? Ordinal () usuly Enum mysallarynyň Enumyň içinde görkezilen tertibini görkezýär. Mysal üçin, DayOfWeek Enum-da günleri tertipde kesgitläp bilersiňiz: we DayOfWeek.MONDAY.ordinal () public enum DayOfWeek{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } usulyna jaň etsek , 0 gaýdyp geler - bu ilkinji mysal. Bu usul zatlaryň hakyky ýagdaýyna görä sargyt bermek üçin örän peýdalydyr: ýagny, Sişenbe güni (sişenbe) Duşenbe (Duşenbe) we WEDNESDAY (Çarşenbe) günlerinden öň gelýändigini görkezýär. Şonuň ýaly-da, fewral ýanwar aýyndan soň, ýöne mart aýyndan öň gelýän ýylyň aýlaryny görkezmek üçin sanap bilersiňiz. Customhli adaty sanalmalar bu usuly java.lang.Enum abstrakt synpyndan miras alýar we olar düzüjiler tarapyndan goralýan konstruktory java.lang.Enum- a çagyryp , adyny we tertipini alýar. 9) Enum-y Java-da TreeSet ýa-da TreeMap bilen ulanmak mümkinmi? Bu, hakykatdanam gyzykly Enum soragy we adamlar bilimleriniň çuňlugyny barlamak üçin haýyş etmegi halaýarlar. Java.lang.Enum kodyna göz aýlaýançaňyz , Enumyň TreeSet we TreeMap ýaly sargyt edilen kolleksiýalarda ulanmak üçin esasy talap bolan Deňeşdirilýän interfeýsi miras alýandygyny bilmersiňiz . Enum deňeşdirip boljak interfeýsi miras alýandygy sebäpli, TreeSet we TreeMap bilen ulanyp bolýar . 10) Enumdaky ordinal () bilen deňeşdirmekTo () arasynda näme tapawut bar? Bu öňki soragdan gönüden-göni gelýär: aslynda deňeşdirmek () usul bilen berlen tertibi simulasiýa edýär “Enum” -yň tebigy tertibi bolan ordinal () . Gysgaça aýdylanda, Enum deňeşdirmeleri yglan edilen tertipde çäklendirýär. Mundan başga-da, bu yzygiderliligi diňe şol bir görnüşdäki beýleki yzygiderlilikler bilen deňeşdirip boljakdygyny ýatdan çykarmaly däldiris - dürli yzygiderliligi deňeşdirmek düzüjiniň ýalňyşlygyna sebäp bolup biler. 11) Enumy wyklýuçatelde ulanyp bolarmy? Hawa, edip bilersiň. Mundan başga-da, bu “Enum” -y ulanmagyň esasy peýdalaryndan biridir. “Enum” mysallary wagtlaýyn üýtgewsizligi düzýänligi sebäpli, olary içerde arkaýyn sanjyp, kommutasiýa edip bilersiňiz . Ine, hepdäniň günleri bilen koduň mysaly: public void developerState(DayOfWeek today){ switch(today){ case MONDAY: System.out.println("Hmmmmmmmm"); break; case TUESDAY: System.out.println("Hmmmm"); break; case FRIDAY : System.out.println("Yeahhhhhh"); break; } } Enum we Switch biri-birini gowy doldurýarlar, esasanam Enumda az mukdarda durnukly yzygiderlilik bar bolsa, mysal üçin hepdäniň ýedi güni, ýylyň 12 aýy we ş.m. “Enum” bilen swith korpusyny ulanmagyň beýleki mysallary . 12) Tutuş Enum mysalynda nädip gaýtalamaly? Java.lang.Enum açan bolsaňyz , bahalar () usulynyň ähli Enum yzygiderliligini yzyna gaýtaryp berýändigini bilýärsiňiz . Her enum java.lang.Enum miras alýandygy sebäpli , olaryň bahalary () usuly bar . Ony ulanyp, belli bir görnüşi sanamagyň ähli yzygiderliligini gaýtalap bilersiňiz. Foreach aýlawy we bahalar () usuly bilen geçýän mysallara serediň . 13) Enumy ýeketäk hökmünde ulanmagyň gowy we zyýany näme? “Enum” ýeke-täk nagşy durmuşa geçirmek üçin çalt gysga ýol açýar we hatda “Effektiv Java” kitabynda-da ýerleşdirilendigi sebäpli, bu meşhur saýlaw. Bir seretseň, “Enum” aýdymy geljegi uly we amatly, meselem, dessine gözegçilik edýär, ygtybarly seriýallaşdyrylýar we ilkinji nobatda, “Enum” -yň kömegi bilen sapakdan ýasalan ýekebara döretmek aňsat. Indi üýtgeýänleriň üýtgewsizligini iki gezek barlamak barada alada etmegiň zerurlygy ýok. Bu çemeleşmäni ulanmagyň peýdasy we zyýany barada has giňişleýin okaň . 14) Int sanamagyň we String sanamagyň ýerine Enum ulanmagyň peýdasy näme? 5 ýyldan gowrak wagt bäri programmirlän bolsaňyz we JDK 1.3 ýa-da 1.4-de bolsaňyz, belli kesgitlenen kolleksiýany görkezmek üçin umumy statiki jemleýji hemişelik prefiksini ulanýan String we int sanamak nagyşlary bilen tanyş bolarsyňyz. hepdäniň günleri ýaly zatlaryň sany . Bu ýerde köp meseleler bar: “Enum” görnüşiniň garaşsyzlygy ýok, sebäbi hepdäniň gününe jogap berýän String üýtgeýjisi islendik esassyz bahany alyp biler. Edil şonuň ýaly-da, sansyz int islendik bahany alyp biler we düzüji ony bagtly ýuwudar. We ulanmak Enum , düzüjiniň barlaýan görnüşiniň howpsuzlygyny alarsyňyz. Javahli Java döredijiler üçin okamak maslahat berilýän Effektiv Java-da bu mowzuk hakda käbir gyzykly pikirler bar. 15) Setiri Enuma nädip öwürmeli? Bu , Java programmasyny işläp düzmekde String we Enum ulanmagyň meşhurlygy sebäpli ýüze çykýan gündelik sorag . Enumy setire öwürmegiň iň oňat usuly, Enumyň özünde String argumentlerini alyp, Enum hökmünde yzyna gaýtaryp berjek zawod usulyny kesgitlemekdir . Şeýle hem, meseläni äsgermezlik edip bilersiňiz. Ine , setirleri sanamaga öwürmegiň käbir mysallary . Bu, Enum hakda 15 sorag ( we jogap ) sanawymyzyň soňuna getirýär . Emma ýadyňyzdan çykarmaň: okamak öwrenmek üçin ýeterlik däl, bu diňe ilkinji ädimdir . Enumlardan peýdalanmak üçin, Enum-yňyzy taslamaňyzda nirede ulanyp boljakdygyny tapmaga synanyşyň - bu size hakyky dünýä tejribesini berer we bu tejribe bilen mysallardan has köp zat öwrenersiňiz, sebäbi has köp çözüp boljak köp problema bilen ýüzbe-ýüz bolarsyňyz. çylşyrymly we jikme-jik ýollar. talaplar. Enum baradaky bu soraglar , esasanam söhbetdeşlik üçin howlukýan bolsaňyz we Enum älemine jikme-jik çümdürmek üçin wagt ýok bolsa, bilimleriňizi barlamak üçin üns bermelidiris.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION