JavaRush /Java Blog /Random-ID /15 Pertanyaan Wawancara Pengembang Mengenai Enum di Java ...
Treefeed
Level 21

15 Pertanyaan Wawancara Pengembang Mengenai Enum di Java (dengan Jawaban!)

Dipublikasikan di grup Random-ID
Enumerasi ( Enum ) diperkenalkan di Java 5 dan sejak itu menjadi cukup populer di kalangan pengembang Java. Ini banyak digunakan di berbagai aplikasi Java. Karena Enum di Java jauh lebih serbaguna daripada di C atau C++, Enum juga menyajikan banyak kasus penggunaan yang menarik, beberapa di antaranya Anda lihat di artikel 10 Cara Menggunakan Enum di Java . Namun terlepas dari popularitas ini, banyak pemrogram Java yang masih belum mengetahui fungsionalitas yang disediakan oleh Enum dan seluk-beluk penggunaan Enum dalam kode Java. Hal ini menjadi jelas dari beberapa pembaca yang bertanya, misalnya, tentang kemampuan Enum untuk mengimplementasikan antarmuka di Java atau Mengapa kami tidak dapat membuat instance Enum di luar Enum , dan mereka ditanya tentang hal ini dalam sebuah wawancara. Hal ini menginspirasi kami untuk menyusun daftar pertanyaan umum di Java Enum yang tidak hanya membantu Anda sukses dalam wawancara, tetapi juga membuka jalan baru untuk belajar. Seperti yang dinyatakan sebelumnya, sering kali pertanyaan wawancara memaksa Anda untuk menanggapi topik tersebut dengan lebih serius, dan ini bukanlah hal yang buruk, dan mengingat kekuatan dan kegunaan Enum, inilah saatnya Anda menjadi master enum. Di bawah ini adalah daftar pertanyaan berdasarkan berbagai fungsi dan properti Enum. Anda bisa menggunakannya sebagai bahan persiapan wawancara atau sekedar panduan pencacahan. Jika Anda baru mengenal Java, Anda akan belajar banyak hal baru dan berguna tentang Enum. 1) Bisakah Enum mengimplementasikan antarmuka di Java? Ya, Enum dapat mewarisi antarmuka . Karena tipe Enum mirip dengan kelas dan antarmuka , ia dapat mewarisi antarmuka. Hal ini memberikan fleksibilitas luar biasa dalam menggunakan Enum sebagai implementasi khusus dalam beberapa kasus. Berikut adalah contoh bagus penggunaan Enum dalam kapasitas ini. 2) Bisakah Enum mewarisi (memperluas) kelas? Tidak, dia tidak bisa! Di luar dugaan, karena sebelumnya dikatakan bahwa tipe Enum mirip dengan kelas atau antarmuka di Java. Nah, inilah alasan utama mengapa pertanyaan ini ditanyakan tepat setelah pertanyaan sebelumnya. Karena Enum sudah mewarisi dari kelas abstrak java.lang.Enum , jelas bahwa kelas lain tidak akan dapat mewarisi karena Java tidak mendukung pewarisan banyak kelas. Dengan mewarisi dari java.lang.Enum , semua enum memiliki metode ordinal() , value(), atau valueOf() . 3) Bagaimana cara membuat Enum tanpa instance objek? Apakah ini mungkin tanpa kesalahan kompilasi? Ini adalah salah satu pertanyaan rumit yang disukai pewawancara. Karena Enum dipandang sebagai kumpulan sejumlah objek tertentu, seperti hari dalam seminggu atau bulan dalam setahun, mendapatkan Enum tanpa apa pun tampak mencurigakan. Tapi ya, Anda bisa membuat Enum tanpa instance , misalnya dengan membuat kelas utilitas. Ini adalah cara inovatif lainnya untuk menggunakan Enum: public enum MessageUtil{ ; // required to avoid compiler error, also signifies no instance public static boolean isValid() { throw new UnsupportedOperationException("Not supported yet."); } } 4) Bisakah kita mengganti metode toString() untuk Enum? Apa yang terjadi jika kita tidak mendefinisikan ulang? Tentu saja Anda dapat mengganti metode toString() Enum , karena Anda dapat mengganti kelas mana pun yang mewarisi java.lang.Object dan memiliki metode toString() yang tersedia, dan bahkan jika tidak, Anda tidak akan kehilangan apa pun karena abstrak basis kelas Enum akan melakukan ini untuk Anda, dan akan mengembalikan nama, yang merupakan nama instance Enum. Berikut adalah kode untuk metode toString() dari kelas Enum: public String toString() { return name; } nama ditentukan ketika kompiler mengalokasikan kode untuk membuat enum sebagai respons terhadap pembuatan instance di kelas Enum itu sendiri, serta membuat ordinal di konstruktor dari kelas Enum. kelas java.lang.Enum : protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } Ini adalah satu-satunya konstruktor untuk membuat enum , yang dipanggil oleh kompiler sebagai respons terhadap deklarasi Enum dalam program. 5) Bisakah kita membuat instance Enum di luar Enum? Mengapa tidak? Anda tidak dapat membuat instance Enum di luar batas Enum karena Enum tidak memiliki publikkonstruktor, dan kompiler tidak akan mengizinkan Anda memperkenalkan konstruktor tersebut. Karena kompiler menghasilkan sebagian besar kode sebagai respons terhadap deklarasi tipe Enum, kompiler tidak mengizinkan konstruktor publik dalam Enum, sehingga memaksa instance Enum untuk dideklarasikan secara internal. 6) Bisakah kita menentukan konstruktor di dalam Enum? Pertanyaan ini sering kali mengikuti pertanyaan sebelumnya. Ya, Anda bisa, tapi ingat bahwa ini hanya mungkin dilakukan dengan konstruktor privat atau paket-pribadi . Konstruktor dengan public dan protected tidak diperbolehkan di Enum. Di sini Anda dapat melihat contohnya . 7) Apa perbedaan antara membandingkan Enum menggunakan metode == atau sama dengan()? Ini adalah masalah yang sangat luas dan rumit yang dibahas secara rinci di sini . 8) Apa yang dilakukan metode ordinal() di Enum? Metode ordinal() mengembalikan urutan penunjukan instance Enum dalam Enum. Misalnya, di Enum DayOfWeek , Anda dapat menentukan hari secara berurutan: public enum DayOfWeek{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } dan jika kita memanggil metode DayOfWeek.MONDAY.ordinal() , metode tersebut akan mengembalikan 0 - yang berarti instance pertama. Cara ini sangat berguna untuk memberikan ketertiban sesuai dengan keadaan sebenarnya: yaitu menunjukkan bahwa SELASA (Selasa) datang setelah SENIN (Senin), dan sebelum RABU (Rabu). Demikian pula, Anda dapat menggunakan enumerasi untuk mewakili bulan-bulan dalam setahun, dengan Februari yang jatuh setelah bulan Januari namun terjadi sebelum bulan Maret. Semua enumerasi khusus mewarisi metode ini dari kelas abstrak java.lang.Enum , dan ditetapkan oleh kompiler dengan memanggil konstruktor yang dilindungi pada java.lang.Enum , yang mengambil nama dan nomor urut. 9) Apakah mungkin menggunakan Enum dengan TreeSet atau TreeMap di Java? Ini adalah pertanyaan Enum yang sangat menarik, dan pertanyaan yang sering ditanyakan orang untuk menguji kedalaman pengetahuan mereka. Sampai Anda melihat kode java.lang.Enum , Anda mungkin tidak akan tahu bahwa Enum mewarisi antarmuka Comparable , yang merupakan persyaratan utama untuk digunakan dalam koleksi terurut seperti TreeSet dan TreeMap . Karena Enum mewarisi antarmuka Comparable secara default , Enum dapat digunakan dengan TreeSet dan TreeMap . 10) Apa perbedaan antara ordinal() dan bandingkanTo() di Enum? Ini mengikuti langsung dari pertanyaan sebelumnya: sebenarnya, CompareTo() menyimulasikan urutan yang disediakan oleh metode ini ordinal() , yang merupakan tatanan alami Enum. Singkatnya, Enum membatasi perbandingan dalam urutan deklarasinya. Selain itu, perlu diingat bahwa konstanta ini hanya dapat dibandingkan dengan konstanta lain yang bertipe sama - membandingkan berbagai jenis konstanta dapat menyebabkan kesalahan kompiler. 11) Apakah mungkin menggunakan Enum dalam switch case? Ya kamu bisa. Terlebih lagi, ini adalah salah satu manfaat utama menggunakan Enum. Karena instance Enum dikompilasi menjadi konstanta sementara, Anda dapat memasukkannya dengan aman ke dalam case dan switch . Berikut contoh kode dengan hari dalam seminggu: 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 dan Switch saling melengkapi dengan baik, terutama jika Enum berisi sejumlah kecil konstanta stabil, misalnya tujuh hari dalam seminggu, 12 bulan dalam setahun, dll. Lihat contoh lain penggunaan swith case dengan Enum . 12) Bagaimana cara mengulangi seluruh instance Enum? Jika Anda telah membuka java.lang.Enum , Anda tahu bahwa metode value() mengembalikan array yang berisi semua konstanta Enum. Karena setiap enum mewarisi java.lang.Enum , mereka memiliki metode value() . Dengan menggunakannya, Anda dapat mengulangi semua konstanta enumerasi tipe tertentu. Lihatlah contoh-contoh yang terjadi dengan loop foreach dan metode value() . 13) Apa pro dan kontra menggunakan Enum sebagai singleton? Enum menyediakan jalan pintas cepat untuk mengimplementasikan pola tunggal, dan karena sudah tercakup dalam buku Java Efektif, ini adalah pilihan yang populer. Pada pandangan pertama, singleton Enum menjanjikan dan cukup nyaman, seperti mengontrol instantiasi, dapat diserialkan dengan aman, dan yang terpenting, mudah untuk membuat singleton yang aman untuk thread menggunakan Enum. Anda tidak perlu lagi khawatir untuk memeriksa ulang volatilitas variabel. Baca lebih lanjut tentang pro dan kontra menggunakan pendekatan ini di sini . 14) Apa keuntungan menggunakan Enum daripada pola enumerasi int dan String? Jika Anda telah memprogram selama lebih dari 5 tahun dan masih menggunakan JDK 1.3 atau 1.4, Anda akan terbiasa dengan pola enumerasi String dan int , yang menggunakan awalan konstanta akhir statis publik untuk mewakili kumpulan data tetap yang terkenal. sejumlah hal, seperti Hari dalam Seminggu . Ada banyak masalah di sini: Anda tidak memiliki independensi tipe Enum, karena variabel String yang bertanggung jawab atas hari dalam seminggu dapat mengambil nilai apa pun. Demikian pula, int yang dapat dihitung dapat mengambil nilai apa pun, dan kompiler akan dengan senang hati menelannya. Dan menggunakan Enum , Anda mendapatkan keamanan tipe yang diperiksa oleh kompiler untuk Anda. Ada beberapa pemikiran menarik tentang topik ini di Java Efektif, yang direkomendasikan untuk dibaca oleh semua pengembang Java. 15) Bagaimana cara mengubah String ke Enum? Ini adalah pertanyaan harian yang muncul karena popularitas penggunaan String dan Enum dalam pengembangan aplikasi Java. Cara terbaik untuk mengonversi Enum menjadi String adalah dengan mendefinisikan metode pabrik pada Enum itu sendiri yang akan mengambil argumen String dan mengembalikannya sebagai Enum . Anda mungkin juga ingin mengabaikan kasus. Berikut adalah beberapa contoh mengubah string menjadi enumerasi. Ini membawa kita ke akhir daftar 15 pertanyaan ( dan jawaban ) tentang Enum. Tapi ingat: membaca saja tidak cukup untuk belajar, itu hanya langkah pertama . Untuk mendapatkan manfaat dari enum, cobalah mencari di mana Anda dapat menggunakan Enum dalam proyek Anda - ini akan memberi Anda pengalaman dunia nyata, dan dengan pengalaman ini Anda akan belajar lebih banyak daripada dari contoh, karena Anda akan menghadapi lebih banyak masalah yang dapat Anda tangani lebih banyak lagi. persyaratan cara yang rumit dan rinci. Pertanyaan-pertanyaan tentang Enum ini patut diperhatikan untuk menguji pengetahuan Anda, terutama jika Anda sedang terburu-buru untuk wawancara dan tidak ada waktu untuk mendalami dunia Enum secara mendetail.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION