Tutorial Java Enum: Apa itu dan Bagaimana Melaksanakannya?



Artikel mengenai Java Enum Tutorial ini akan memberi anda pengetahuan terperinci mengenai pemalar Enum beserta contoh praktikal untuk pemahaman yang lebih baik.

The Penghitungan di adalah kaedah menentukan kelas dengan pemalar tetap dan dinamakan dengan masing-masing menggunakan kata kunci enum. Di dalam ini ' Tutorial Enum Java 'Artikel, kita akan belajartentukan Penghitungan bersama dengancontoh untuk pemahaman yang lebih baik.

Apa itu Numerasi?

Jumlah Java adalah kelas yang mempunyai sekumpulan pemalar tetap atau pemboleh ubah yang tidak cenderung berubah. Penghitungan di Java dicapai dengan menggunakan kata kunci enum. Jawa enum pemalar adalah statik dan akhir secara tersirat. Ciri Enum sudah tersedia sejak JDK versi 1.5.





Mengapa Kita Memerlukan Penghitungan?

enum meningkatkan keselamatan jenis pada pemeriksaan waktu kompilasi untuk mengelakkan kesilapan pada waktu berjalan dengan mengelakkan kod plat boiler. Sebagai contoh, jika anda harus memilih satu kemungkinan daripada sebilangan kecil pilihan yang ada, katakan,

Pekerjaan Jenis: (Kontrak / Sementara / Kekal)



Pekerja tutorial enum Java

Maka pilihan terbaik adalah menggunakan enum. Kerana enum boleh digunakan dengan mudah di suis. enum boleh dilalui. enum boleh mempunyai bidang, pembina dan kaedah. Oleh itu, ini meningkatkan pemeriksaan waktu kompilasi dan menghindari kesalahan kerana melewati pemalar yang tidak sah, kerana anda telah mendokumentasikan nilai mana yang sah untuk digunakan.

Perbezaan antara Enum dan Kelas

Walaupun kelas dan enum mempunyai fungsi yang serupa di persekitaran Java, mereka berbeza dalam beberapa aspek. Mari kita bincangkan perbezaannya



argumen baris perintah dalam kava contoh java
Enum Kelas
Pemalar enum tidak boleh digantiPemalar kelas boleh diganti
Enum tidak menyokong Penciptaan ObjekKelas menyokong Penciptaan Objek
Enum tidak dapat melanjutkan kelas lainSatu kelas boleh melanjutkan kelas yang lain
enum cantara muka implementKelas boleh melaksanakan Antaramuka


Contoh Praktikal Enum

Sekarang, untuk memahami enum dengan cara yang jauh lebih baik, marilah kita melaksanakan beberapa contoh praktikal berdasarkan yang berikut.

Mendefinisikan Penghitungan di Java

Enum boleh dinyatakan sama ada di dalam kelas atau di luar cbiarkan. Tetapi, ia tidak dapat dinyatakan dalam kaedah apa pun. Mari kita ambil contoh kecil untuk memahami sintaksis, definisi dan deklarasinya.

Sintaks:

nama enum {pemalar}

Dalam contoh ini, kami telah menyatakan utama () kaedah dalam enum

definisi pakej kelas awam Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}

// Ouput

KTM

Dalam contoh ini, utama () kaedah dinyatakan di luar daripada enum.

definisi pakej enum Warna {BAJAJ, KTM, YAMAHA} kelas awam Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}

//Pengeluaran:

YAMAHA

Enum digunakan dalam Switch Case

Penghitungan boleh digunakan dalam pernyataan peralihan juga. Adalah penting bahawa semua pernyataan kes mesti menggunakan pemalar dari enum yang sama seperti yang digunakan oleh pernyataan suis. Mari kita periksa contoh berdasarkan ini.

Di sini, kami akan menyatakan enum dengan hari-hari dalam seminggu sebagai elemennya dan kami akan menyampaikan data dalam bentuk rentetan untuk mencetak data kes yang sepadan.

pakej bertukar enum Hari {SUNDAY, MONDAY, SELASA, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} kelas awam Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case Isnin: kes pecah System.out.println ('Hai, Hari Ini Isnin') SELASA: Kes pecah System.out.println ('Hai, Hari Ini Selasa') RABU: System.out.println ('Hai, Hari ini Rabu kes pecah KHAMIS: System.out.println ('Hi, Today is Thursday') case break FRIDAY: System.out.println ('Hello, Today is Friday.') break case SABTU: System.out.println (' Hai, Hari Ini adalah cuti hujung minggu anda ') SUNDAY: System.out.println (' Hi, Today is a Holiday ') rehat lalai: System.out.println (' Sila masukkan hari yang sah. ') Rehat}} statik awam kekosongan utama (String [] args) {String str = 'MONDAY' Edureka e1 = Edureka baru (Day.valueOf (str)) e1.dayIsLike ()}}

//Pengeluaran:

Hai, Hari iniIsnin

Warisan menggunakan enum

Pada dasarnya, ada enum dilambangkan sebagai kelas yang meluaskan kelas abstrak java.lang. Enum dan mempunyai beberapa ahli statik. Oleh itu, sebuah enum tidak boleh melanjutkan kelas lain atau enum tidak ada gandaan harta pusaka . Marilah kita melaksanakan contoh untuk memahaminya dengan cara yang lebih baik.

Di sini, kami akan mewarisi OS berdasarkan pembuat telefon.

pakej pewarisan import java.util.ArrayList import java.util.List public class Edureka {public static void main (String [] args) {List maut = ArrayList baru () mewarisi.add (LibraryEnum.FIRST) mewarisi.add (ClientEnum. google) untuk (elemen HTTPMethodConvertible: mewarisi) {System.out.println (element.getHTTPMethodType ())}} antara muka statik HTTPMethodConvertible {public String getHTTPMethodType ()} enum statik LibraryEnum menerapkan HTTPMethodConvertible {PERTAMA ('Google Pixel'), SECOND 'Huawei'), THIRD ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} enum statik ClientEnum mengimplementasikan HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}

//Pengeluaran:

Google Pixel
Android One

Jumlahkan dengan nilai yang disesuaikan

Enum mempunyai nilai rentetan sendiri secara lalai, kami juga dapat menetapkan beberapa nilai tersuai kepada enum. Mari kita perhatikan contoh di bawah.

enum Lalu Lintas {MERAH ('HENTI'), ORANGE ('TUNGGU'), HIJAU ('PERGI')}

Dalam contoh di atas, kita dapat melihat bahawa Traffic enum mempunyai tiga anggota. Yaitu,

MERAH, ORANGE dan HIJAU mempunyai nilai tersendiri yang berbeza BERHENTI, TUNGGU dan PERGI masing-masing.

Sekarang untuk menggunakan jenis enum yang sama dalam kod, kita diharapkan dapat mengikuti beberapa perkara iaitu:

  • Kita perlu mencipta pembina parameter untuk kelas enum ini. Kerana kita tahu itu enum objek kelas tidak dapat dibuat secara eksplisit jadi untuk memulakan kami menggunakan konstruktor parameter.
  • The pembina tidak boleh menjadi orang awam atau dilindungi yang mesti dimiliki peribadi atau lalai pengubah. Sekiranya kita membuat awam atau dilindungi, ia akan memungkinkan untuk memulakan lebih dari satu objek yang bertentangan sepenuhnya fungsi enum.
  • Kita harus membuat kaedah mendapatkan untuk mendapatkan nilai jumlah.

Mari kita laksanakan program berdasarkan ini.

pakej traffic enum TrafficSignal {RED ('STOP'), GREEN ('GO'), ORANGE ('WAIT') private String action public String getAction () {return this.action} private TrafficSignal (String action) {this.action = action}} kelas awam Edureka {public static void main (String args []) {TrafficSignal [] signal = TrafficSignal.values ​​() untuk (TrafficSignal signal: signal) {System.out.println ('name:' + signal.name () + 'action:' + signal.getAction ())}}}

//Pengeluaran:

nama: tindakan MERAH: BERHENTI
nama: tindakan HIJAU: PERGI
lelakie: tindakan ORANGE: TUNGGU

Huraikan dalam pernyataan if-else-if

Sekarang, mari kita laksanakan program berdasarkan enum dalam pernyataan if-else-if. Di sini, kita akan menemui arah melintang dengan meneruskan nilai arah yang terdapat di enum.

pakej Arah enum Arah {EAST, WEST, NORTH, SOUTH} kelas awam Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Arah.EAST) {System.out.println ( 'Direction: East')} lain jika (dir == Arah.WEST) {System.out.println ('Direction: West')} lain jika (dir == Arah.NORTH) {System.out.println ('Direction : Utara ')} yang lain {System.out.println (' Direction: South ')}}}

//Pengeluaran:

Katakanlahction: Utara

Kaedah yang berbeza digunakan dengan enum

Nilai (): Apabila anda membuat enum, the Penyusun Java secara dalaman menambah nilai () kaedah. Kaedah ini mengembalikan susunan mengandungi semua nilai enum.

// Sintaks:

nilai jenis enum statik awam [] ()

Kami akan mengetahui nilai indeks elemen tertentu dalam array.

nilai pakej enum Warna {MERAH, HIJAU, BIRU} kelas awam Edureka {public static void main (String [] args) {Color arr [] = Color.values ​​() untuk (Color col: arr) {System.out.println ( col + 'at index' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}

//Pengeluaran:

menukar rentetan tarikh ke tarikh

MERAH pada indeks 0
HIJAU pada indeks 1
BIRU pada indeks 2
BERSIH

Nilai(): Inikaedah digunakan untuk mengembalikan pemalar penghitungan yang nilainya sama dengan lulus sebagai hujah sambil memanggil kaedah ini.

// Sintaks:

nilai jenis enum statik awamOf (String str)

Di sini, kita akan dapati kos telefon tertentu berdasarkan input yang kita sampaikan ke tali.

nilai pakej enum Mobile {Samsung (1099), Apple (1250), Google (1325) harga int Mobile (int p) {harga = p} int showPrice () {return price}} kelas awam Edureka {public static void main (String args []) {System.out.println ('ListPhone List:') untuk (Mobile m: Mobile.values ​​()) {System.out.println (m + 'cost' + m.showPrice () + 'dolar' )} Mobile ret ret = Mobile.valueOf ('Samsung') System.out.println ('Dipilih:' + ret)}}

//Pengeluaran:

Samsung berharga 1099 dolar
Apple berharga 1250 dolar
Google berharga 1325 dolar
Dipilih: Samsung

Biasa (): Jurubahasa Java menambah ordinal () kaedah secara dalaman apabila mencipta enum. Kaedah ordinal () mengembalikan indeks dari nilai enum.

// Sintaks:

intinal final awam ()

Di sini, kita akan mengetahui nilai indeks elemen tertentu dalam array. dan juga, kedudukan buah ceri.

Bungkus ordinal enum Fruits {Apple, Banana, Cherry, Date, Elderberry} enum Vegetables {Carrot, Beetroot, Beans, Tomato, Onion} kelas awam Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. nilai () untuk (Buah fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Buah-buahan f1, f2, f3 f1 = Buah-buahan. Apple f2 = Buah-buahan. Ceri f3 = Buah-buahan. Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'datang selepas' + f1)} Sayuran v1 = Sayuran. Beetroot if (f1.equals (v1)) {System.out.println (' Tidak betul ')}}}

//Pengeluaran:

Apple: 0
Pisang: 1
Ceri: 2
Tarikh: 3
Elderberry: 4
Cherry hadir selepas Apple

Kelebihan Enum

  • Enum di Java bertambah baik keselamatan jenis
  • Enum direka agar mudah digunakan di menukar kes
  • Enum dapat melintasi
  • Enum dapat bidang, kaedah, dan pembina
  • Enum dapat melaksanakan antara muka
  • Enum tidak boleh memanjangkan a kelas kerana secara dalaman, ia meluas Enum kelas

Enum Usecase: Permainan Batu, Kertas, Gunting

Kami akan menggunakan enum di Java untuk membuat permainan masa kecil kita, kertas batu (batu) dan gunting . Kod berikut menerangkan bagaimana.

pakej Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} kelas awam 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 Scanner in = new Scanner (System.in) System.out.println ('nBiarkan kita mula ... n') sementara (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('nPusing anda (Sila Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk berhenti): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} lain jika (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} lain jika (inChar == 'p') {playerMove = HandSign.PAPER} lain jika (inChar == 't') {playerMove = HandSign.STONE} yang lain {System.out.println ( 'nSila periksa input dan cuba lagi! n') validInput = false}} semasa (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIni giliran saya: SCISSORn')} lain jika (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nI giliran saya: PAPERn')} lain {computerMove = HandSign.STONE System.out.println ('nSi giliran saya: STONEn')} jika (computerMove = = playerMove) {System.out.println ('nI It a Tie! n') ++ numTie} lain jika (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor memotong kertas , Saya menang! N ') ++ numComputerWon} lain jika (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper membungkus batu, saya menang! N ') ++ numComputerWon} lain jika (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone break gunting, saya menang! n') ++ numComputerWon} lain {System.out.println ('nCongratulations. ..! Anda menang! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nJumlah percubaan: '+ numTrials) System.out.printf (' Saya menang% d (%. 2f %%) . Anda memenangi% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Bye !, Semoga anda menikmati ..! ' )}}

//Pengeluaran:

Mari kita mulakan ...
Gunting-Kertas-Batu
Giliran anda (Sila Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk berhenti):
s
Sekarang giliran saya: BATU
Gunting pecah batu, saya menang!
Gunting-Kertas-Batu
Giliran anda (Sila Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk berhenti):
apa
Bilangan percubaan: 1Saya menang 1 (100.00%). Anda menang 0 (0.00%).
Bye !, Semoga anda menikmati ..!

Dengan ini, kita akan mengakhiri Tutorial Enum Java ini. Saya harap anda telah memahami Enum di Java dan pelaksanaannya melalui beberapa contoh masa nyata.

Sekarang anda sudah faham enum asas melalui 'Java Enum Tutorial' ini lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi anda permulaan dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Musim bunga .

Ada soalan untuk kami? Sebutkannya di bahagian komen blog 'Java Enum Tutorial' ini dan kami akan menghubungi anda secepat mungkin.