Enumerasi (
Enum ) dikenalaké ing
Java 5 lan wiwit iku wis dadi cukup populer ing antarane pangembang Jawa. Iki digunakake akeh ing macem-macem aplikasi Java. Amarga Enum ing Jawa luwih serbaguna tinimbang ing C utawa C ++, uga nyedhiyakake akeh kasus panggunaan sing menarik, sawetara sing sampeyan deleng ing artikel
10 Cara Nggunakake Enum ing Jawa . Nanging senadyan popularitas iki, akeh programer Jawa isih ora ngerti babagan fungsi sing diwenehake dening Enum lan seluk-beluk nggunakake Enum ing kode Jawa.
Iki dadi jelas saka sawetara pembaca sing takon, contone, babagan
kemampuan Enum kanggo ngleksanakake antarmuka ing Jawa utawa
Napa kita ora bisa instantiate Enums ing njaba Enum , amarga dheweke takon babagan iki ing wawancara. Iki menehi inspirasi kanggo ngumpulake
dhaptar pitakonan sing kerep ditakoni ing Java Enum sing ora mung mbantu sampeyan sukses ing wawancara, nanging uga mbukak dalan anyar kanggo sinau. Kaya sing wis kasebut sadurunge, asring pitakonan wawancara meksa sampeyan njupuk topik kasebut kanthi luwih serius, sing dudu bab sing ala, lan diwenehi kekuwatan lan migunani Enum, wektune sampeyan dadi master enum. Ing ngisor iki dhaptar pitakonan adhedhasar macem-macem fungsi lan sifat Enum. Sampeyan bisa nggunakake minangka bahan persiapan kanggo wawancara utawa mung pandhuan enumerasi. Yen sampeyan anyar ing Jawa, sampeyan bakal sinau akeh bab anyar lan migunani babagan Enum.
1) Apa Enum bisa ngetrapake antarmuka ing Jawa? Ya,
Enum bisa warisan antarmuka . Amarga jinis Enum padha karo
kelas lan
antarmuka , bisa oleh warisan antarmuka. Iki menehi keluwesan apik tenan ing nggunakake Enum minangka implementasine adat ing sawetara kasus.
Iki minangka conto sing apik babagan nggunakake Enum ing kapasitas iki.
2) Apa Enum bisa warisan (ngluwihi) kelas? Ora, dheweke ora bisa! Ora dikarepke, amarga sadurunge wis ngandika sing jinis Enum padha karo kelas utawa antarmuka ing Jawa. Ya, iki minangka alesan utama kenapa pitakonan iki ditakoni sawise sing sadurunge. Wiwit
Enum wis warisan saka kelas abstrak
java.lang.Enum , iku cetha yen kelas liyane ora bakal bisa kanggo warisan wiwit Jawa ora ndhukung sawetara warisan kelas. Kanthi warisan saka
java.lang.Enum , kabeh enum duwe metode
ordinal () ,
nilai (), utawa
valueOf () .
3) Kepiye carane nggawe Enum tanpa conto obyek? Apa iki bisa tanpa kesalahan kompilasi? Iki minangka salah sawijining
pitakonan rumit sing disenengi para pewawancara. Wiwit Enum katon minangka kumpulan obyek tartamtu, kayata
dina minggu utawa
sasi ing taun, entuk
Enum tanpa ana sing curiga. Nanging ya, sampeyan
bisa nggawe Enum tanpa instance , umpamane kanthi nggawe kelas sarana. Iki cara inovatif liyane kanggo nggunakake Enum:
public enum MessageUtil{ ; // required to avoid compiler error, also signifies no instance public static boolean isValid() { throw new UnsupportedOperationException("Not supported yet."); } }
4) Apa kita bisa ngalahake toString () cara kanggo Enum? Apa sing kedadeyan yen kita ora nemtokake maneh? Mesthi sampeyan bisa ngatasi cara
toString () Enum , amarga sampeyan bisa ngatasi kelas apa wae sing duwe
java.lang.Object lan duwe metode
toString () kasedhiya, lan sanajan sampeyan ora nindakake, sampeyan ora bakal kelangan apa-apa amarga abstrak. basis saka kelas Enum bakal nindakake iki kanggo sampeyan, lan bakal bali jeneng, kang jeneng saka conto Enum. Punika kode kanggo
toString () cara saka kelas Enum:
public String toString() { return name; }
jeneng kasebut nalika compiler allocates kode kanggo nggawe enum minangka respon kanggo nggawe conto ing kelas Enum dhewe, uga nggawe ordinal ing konstruktor saka
java.lang.Enum kelas :
protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; }
Iki
mung konstruktor kanggo nggawe enum , kang diarani compiler kanggo nanggepi wara-wara Enum ing program.
5) Apa kita bisa instantiate Enum ing njaba Enum? Ngapa ora? Sampeyan
ora bisa instantiate Enum ing njaba wates Enum amarga Enum ora duwe
umum.konstruktor, lan kompiler ora ngidini sampeyan ngenalake konstruktor kasebut. Amarga kompiler ngasilake paling kode kanggo nanggepi deklarasi jinis Enum, ora ngidini konstruktor
umum ing Enums, meksa kedadeyan Enum diumumake sacara internal.
6) Apa kita bisa nemtokake konstruktor ing Enum? Pitakonan iki asring ngetutake sing sadurunge. Ya, sampeyan bisa, nanging elinga yen iki mung bisa ditindakake kanthi konstruktor
pribadi utawa
paket-pribadi . Konstruktor karo
umum lan
dilindhungi ora diijini ing Enum. Kene sampeyan bisa ndeleng
conto .
7) Apa prabédan antarane mbandhingaké Enum nggunakake == utawa padha () cara? Iki minangka masalah sing wiyar lan angel banget sing dibahas kanthi rinci
ing kene .
8) Apa cara ordinal () ing Enum? Cara
ordinal () ngasilake urutan ing enum sing ditetepake ing Enum. Contone, ing
DayOfWeek Enum, sampeyan bisa nemtokake dina ing urutan:
public enum DayOfWeek{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
lan yen kita nelpon
DayOfWeek.MONDAY.ordinal () cara , bakal bali 0 - kang tegese Kayata pisanan. Cara iki migunani banget kanggo nyedhiyakake tatanan miturut kahanan sing nyata: yaiku, nuduhake yen
SELASA (Selasa) teka sawise
SENEN (Senin), lan sadurunge
Rebo (Rebo). Kajaba iku, sampeyan bisa nggunakake enumerasi kanggo makili sasi ing taun, nalika Februari sawise Januari nanging sadurunge Maret. Kabeh enumerations adat olèh warisan cara iki saka kelas abstrak
java.lang.Enum , lan padha disetel dening compiler dening nelpon konstruktor
dilindhungi ing
java.lang.Enum , kang njupuk jeneng lan ordinal.
9) Apa bisa nggunakake Enum karo TreeSet utawa TreeMap ing Jawa? Iki minangka pitakonan Enum sing menarik banget, lan sing disenengi wong kanggo nyoba kedalaman kawruh. Nganti sampeyan ndeleng kode
java.lang.Enum , sampeyan mbokmenawa ora bakal ngerti yen
Enum nduweni antarmuka Comparable , sing minangka syarat utama kanggo nggunakake koleksi kaya
TreeSet lan
TreeMap .
Wiwit Enum marisi antarmuka Comparable minangka standar , bisa digunakake karo
TreeSet lan
TreeMap .
10) Apa prabédan antarane ordinal () lan compareTo () ing Enum? Iki nderek langsung saka pitakonan sadurungé: nyatane,
compareTo () simulates urutan diwenehake dening cara
ordinal () , kang urutan alam saka Enum. Ing cendhak, Enum matesi bandingaken ing urutan kang padha ngumumaké. Sampeyan uga kudu eling yen konstanta iki mung bisa dibandhingake karo konstanta liyane saka jinis sing padha - mbandhingake macem-macem jinis konstanta bisa nyebabake kesalahan compiler.
11) Apa bisa nggunakake Enum ing kasus ngalih? Ya, sampeyan bisa. Kajaba iku, iki minangka salah sawijining mupangat utama nggunakake Enum. Wiwit kedadean Enum dikompilasi menyang konstanta sauntara, sampeyan bisa nyuntikake kanthi aman ing
kasus lan ngalih . Punika conto kode karo dina minggu:
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 lan Ngalih nglengkapi saben liyane uga, utamané yen Enum ngemot nomer cilik saka konstanta stabil, contone, pitung dina minggu, 12 sasi taun, etc. conto liyane nggunakake
kasus swith karo Enum .
12) Kepiye cara ngulang kabeh conto Enum? Yen sampeyan wis mbukak
java.lang.Enum , sampeyan ngerti yen metode
nilai () ngasilake array kabeh konstanta Enum. Wiwit saben enum warisan
java.lang.Enum , padha duwe
nilai () cara . Nggunakake, sampeyan bisa ngulang kabeh konstanta enumerasi saka jinis tartamtu. Deleng
conto sing bakal ditindakake kanthi loop
foreach lan metode
nilai () .
13) Apa pro lan kontra nggunakake Enum minangka singleton? Enum menehi
trabasan cepet kanggo ngleksanakake pola singleton, lan wiwit iku malah dijamin ing buku Jawa Efektif, iku pilihan populer. Sepisanan, Enum singleton janjeni lan cukup trep, kayata kontrol instantiation, aman serializable, lan ndhuwur kabeh, iku gampang kanggo nggawe thread-aman singleton nggunakake Enum. Sampeyan ora perlu kuwatir maneh babagan mriksa volatilitas variabel. Waca liyane babagan Pros lan cons saka nggunakake pendekatan iki
kene .
14) Apa gunane nggunakake Enum tinimbang enumerasi int lan pola enumerasi String? Yen sampeyan wis nggawe program luwih saka 5 taun lan isih ana ing JDK 1.3 utawa 1.4, sampeyan bakal ngerti
pola enumerasi String lan int , sing nggunakake prefiks konstan
final statis umum kanggo makili koleksi tetep kondhang. nomer bab, kaya
dina Minggu . Ana akeh masalah kene: sampeyan ora duwe kamardikan saka jinis Enum, wiwit variabel
String tanggung jawab kanggo dina minggu bisa njupuk sembarang Nilai kasepakatan. Kajaba iku,
int sing bisa enumerable bisa njupuk sembarang nilai, lan compiler bakal seneng ngulu. Lan nggunakake
Enum , sampeyan entuk jinis safety sing dipriksa kompiler kanggo sampeyan. Ana sawetara pikiran sing menarik babagan topik iki ing Jawa Efektif, sing dianjurake kanggo maca kanggo kabeh pangembang Jawa.
15) Kepiye carane ngowahi String dadi Enum? Iki minangka pitakonan saben dina sing muncul amarga popularitas nggunakake
String lan
Enum ing pangembangan aplikasi Java. Cara paling apik kanggo ngowahi
Enum menyang String yaiku kanggo nemtokake cara pabrik ing Enum dhewe sing bakal njupuk argumen
String lan bali minangka
Enum . Sampeyan bisa uga pengin nglirwakake kasus. Ing ngisor iki sawetara
conto ngowahi string dadi enumerasi. Iki ndadekke kita menyang mburi dhaptar 15 pitakonan (
lan jawaban ) babagan Enum.
Nanging elinga:
maca ora cukup kanggo sinau, iku mung langkah pisanan . Kanggo entuk manfaat saka enums, coba goleki ngendi sampeyan bisa nggunakake Enum ing proyek sampeyan - iki bakal menehi pengalaman nyata, lan kanthi pengalaman iki sampeyan bakal sinau luwih akeh tinimbang conto, amarga sampeyan bakal nemoni masalah liyane sing bisa ditangani kanthi luwih akeh. cara rumit lan rinci syarat.
Pitakonan babagan Enum iki kudu digatekake kanggo nyoba kawruh sampeyan, utamane yen sampeyan kesusu kanggo wawancara lan ora ana wektu kanggo nyemplungake kanthi rinci ing alam semesta Enum.
GO TO FULL VERSION