Itu Pencacahan dalam adalah cara untuk mendefinisikan kelas dengan konstanta tetap dan bernama dengan masing-masing menggunakan kata kunci enum. Di dalam ' Tutorial Java Enum Artikel, kita akan belajardefinisikan Pencacahan bersamacontoh untuk pemahaman yang lebih baik.
- Apa itu Pencacahan?
- Mengapa Kita Membutuhkan Pencacahan?
- Perbedaan antara Enum dan Kelas
- Contoh Praktis Enum
- Keuntungan dari Enum
- Kasus Penggunaan Enum: Rock, Kertas, Gunting
Apa itu Pencacahan?
Java Enums adalah kelas yang memiliki himpunan konstanta atau variabel tetap yang tidak cenderung berubah. Pencacahan di Jawa dilakukan dengan menggunakan kata kunci enum. Jawa enum konstanta adalah statis dan terakhir secara implisit. Fitur Enum tersedia sejak JDK versi 1.5.
Mengapa Kita Membutuhkan Pencacahan?
enum meningkatkan keamanan tipe pada pemeriksaan waktu kompilasi untuk menghindari kesalahan pada waktu proses dengan menghindari kode boilerplate. Misalnya, jika Anda harus memilih satu kemungkinan dari jumlah pilihan yang paling sedikit, katakanlah,
Pekerjaan Tipe: (Kontrak / Sementara / Permanen)
penggunaan charat di java
Maka opsi terbaik adalah menggunakan file enum. Karena enum dapat dengan mudah digunakan di sakelar. enum bisa dilalui. enum bisa memiliki bidang, konstruktor dan metode. Karenanya, ini meningkatkan pemeriksaan waktu kompilasi dan menghindari kesalahan karena meneruskan konstanta yang tidak valid, karena Anda telah mendokumentasikan nilai mana yang legal untuk digunakan.
Perbedaan antara Enum dan Kelas
Meskipun kelas dan enum memiliki fungsi serupa di lingkungan Java, mereka berbeda dalam beberapa aspek. Mari kita bahas perbedaannya
Enum | Kelas |
Konstanta enum tidak dapat diganti | Konstanta kelas dapat diganti |
Enum tidak mendukung Penciptaan Objek | Kelas mendukung Penciptaan Objek |
Enum tidak dapat memperluas kelas lain | Kelas A dapat memperluas kelas lain |
enum cAntarmuka implement | Sebuah kelas dapat mengimplementasikan Interface |
Contoh Praktis Enum
Sekarang, untuk memahami enum dengan cara yang jauh lebih baik, mari kita jalankan beberapa contoh praktis berdasarkan berikut ini.
- Mendefinisikan Pencacahan di Jawa
- Enum digunakan dalam Switch Case
- Pewarisan menggunakan enum
- Enum dengan nilai yang disesuaikan
- Enum dalam pernyataan if-else-if
- Metode berbeda digunakan dengan enum
Mendefinisikan Pencacahan di Jawa
Enum dapat dideklarasikan baik di dalam kelas atau di luar cmembiarkan. Tapi, itu tidak bisa dideklarasikan di dalam metode apapun. Mari kita ambil contoh kecil untuk memahami sintaks, definisi, dan deklarasinya.
Sintaksis:
nama enum {constants}
Dalam contoh ini, kami telah mendeklarasikan utama() metode dalam enum
definisi paket kelas publik 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, file utama() metode dideklarasikan di luar dari enum.
definisi paket enum Color {BAJAJ, KTM, YAMAHA} kelas publik Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}
//Keluaran:
YAMAHA
Enum digunakan dalam Switch Case
Pencacahan juga dapat digunakan dalam pernyataan sakelar. Penting bahwa semua pernyataan case harus menggunakan konstanta dari enum yang sama seperti yang digunakan oleh pernyataan switch. Mari kita periksa contoh berdasarkan ini.
Di sini, kami akan mendeklarasikan enum dengan hari dalam seminggu sebagai elemennya dan kami akan meneruskan data dalam bentuk string untuk mencetak data case yang cocok.
paket diaktifkan enum Hari {MINGGU, SENIN, SELASA, RABU, KAMIS, JUMAT, SABTU} kelas umum Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case SENIN: System.out.println ('Hai, Hari ini Senin') break case SELASA: System.out.println ('Hai, Today is Tuesday') break case RABU: System.out.println ('Hai, Hari ini Rabu ') break case KAMIS: System.out.println (' Hai, Hari Ini Kamis ') break case JUMAT: System.out.println (' Halo, Hari Ini Jumat. ') break case SABTU: System.out.println (' Hai, Hari ini adalah Akhir Pekan Anda ') break case MINGGU: System.out.println (' Hai, Hari Ini Libur ') jeda default: System.out.println (' Harap masukkan hari yang valid. ') Break}} public static void main (String [] args) {String str = 'MONDAY' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}
//Keluaran:
Hai, Hari iniSenin
Pewarisan menggunakan enum
Pada dasarnya, apa saja enum direpresentasikan sebagai kelas yang memperluas kelas abstrak java.lang. Enum dan memiliki beberapa anggota statis. Oleh karena itu, sebuah enum tidak dapat memperpanjang kelas lain atau enum tidak ada kelipatan warisan . Mari kita berikan contoh untuk memahaminya dengan cara yang lebih baik.
Di sini, kami akan mewarisi OS berbasis pembuat ponsel.
paket warisan impor java.util.ArrayList impor java.util.List kelas publik Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) untuk (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} antarmuka statis HTTPMethodConvertible {public String getHTTPMethodType ()} enum statis LibraryEnum mengimplementasikan HTTPMethodConvertible {FIRST ('Google Pixel'), SECOND ( 'Huawei'), KETIGA ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} string publik getHTTPMethodType () {return httpMethodType}} enum statis ClientEnum mengimplementasikan HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} String publik getHTTPMethodType () {return httpMethodType}}}
//Keluaran:
Google Pixel
Android One
Enum dengan nilai yang disesuaikan
Enum memiliki nilai stringnya sendiri secara default, kita juga dapat menetapkan beberapa nilai kustom ke enum. Mari kita perhatikan contoh di bawah ini.
enum Traffic {RED ('STOP'), ORANGE ('WAIT'), GREEN ('GO')}
Dalam contoh di atas, kita dapat melihat bahwa Traffic enum memiliki tiga anggota. Yaitu,
MERAH, ORANYE dan HIJAU dengan memiliki nilai kustom yang berbeda BERHENTI, TUNGGU dan PERGILAH masing-masing.
Sekarang untuk menggunakan jenis enum yang sama dalam kode, kita diharapkan mengikuti beberapa poin yaitu:
- Kita perlu menciptakan konstruktor berparameter untuk kelas enum ini. Karena kita tahu itu enum objek kelas tidak dapat dibuat secara eksplisit sehingga untuk menginisialisasi kami menggunakan konstruktor berparameter.
- Itu pembangun tidak bisa menjadi publik atau dilindungi yang harus dimilikinya pribadi atau default pengubah. Jika kita membuat publik atau dilindungi, itu akan memungkinkan menginisialisasi lebih dari satu objek yang sepenuhnya bertentangan fungsionalitas enum.
- Kita harus membuat metode pengambil untuk mendapatkan nilainya enums.
Mari kita jalankan program berdasarkan ini.
lalu lintas paket enum TrafficSignal {MERAH ('STOP'), HIJAU ('GO'), ORANGE ('WAIT') private String tindakan publik String getAction () {return this.action} private TrafficSignal (String action) {this.action = tindakan}} kelas publik Edureka {public static void main (String args []) {TrafficSignal [] signal = TrafficSignal.values () untuk (TrafficSignal signal: signal) {System.out.println ('name:' + signal.name () + 'action:' + signal.getAction ())}}}
//Keluaran:
Nama: aksi MERAH: BERHENTI
nama: GREEN action: GO
priae: ORANGE action: WAIT
Enum dalam pernyataan if-else-if
Sekarang, mari kita jalankan program berdasarkan enum dalam pernyataan if-else-if. Di sini, kita akan menemukan arah traversal dengan meneruskan nilai-nilai arah yang tersedia di enum.
Paket Arah enum Arah {TIMUR, BARAT, UTARA, SELATAN} kelas publik Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Direction: East')} else if (dir == Directions.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : Utara ')} lain {System.out.println (' Arah: Selatan ')}}}
//Keluaran:
Mengatakankutipan: Utara
Metode berbeda digunakan dengan enum
Nilai (): Saat Anda membuat enum, file Kompiler Java secara internal menambahkan nilai () metode. Metode ini mengembalikan file Himpunan berisi semua nilai enum.
//Sintaksis:
public static enum-type [] values ()
Kami akan mencari tahu nilai indeks dari elemen tertentu dalam sebuah array.
nilai paket enum Warna {MERAH, HIJAU, BIRU} kelas publik 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'))}}
//Keluaran:
cara menjalankan php di windows 10
MERAH pada indeks 0
HIJAU pada indeks 1
BIRU pada indeks 2
BERSIH
Nilai dari(): Inimetode digunakan untuk mengembalikan konstanta pencacahan yang nilainya sama dengan diteruskan sebagai argumen saat memanggil metode ini.
//Sintaksis:
public static enum-type valueOf (String str)
Di sini, kita akan menemukan biaya telepon tertentu berdasarkan masukan yang kita berikan ke string.
nilai paket dari enum Mobile {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 ('Daftar Ponsel:') untuk (Seluler m: Mobile.values ()) {System.out.println (m + 'biaya' + m.showPrice () + 'dolar' )} Ret seluler = Mobile.valueOf ('Samsung') System.out.println ('Selected:' + ret)}}
//Keluaran:
Harga Samsung 1.099 dolar
Apple berharga 1.250 dolar
Google berharga 1.325 dolar
Dipilih: Samsung
Urut(): Penerjemah Java menambahkan urut() metode internal saat membuat file enum. Metode ordinal () mengembalikan indeks dari nilai enum.
//Sintaksis:
public final int ordinal ()
Di sini, kita akan mengetahui nilai indeks dari elemen tertentu dalam sebuah array. dan juga posisi buah ceri.
Paket ordinal enum Buah-buahan {Apel, Pisang, Ceri, Tanggal, Elderberry} enum Sayuran {Wortel, Bit, Kacang-kacangan, Tomat, Bawang} kelas umum Edureka {public static void main (String [] args) {Fruits [] fru = Fruits. nilai () untuk (Buah fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Buah f1, f2, f3 f1 = Buah.Apple f2 = Buah.Cherry f3 = Buah.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'datang setelah' + f1)} Sayuran v1 = Vegetables.Beetroot if (f1.equals (v1)) {System.out.println (' Salah ')}}}
//Keluaran:
Apel: 0
Pisang: 1
Ceri: 2
Tanggal: 3
Elderberry : 4
Cherry datang setelah Apple
Keuntungan dari Enum
- Enum di Java meningkat jenis keamanan
- Enum dirancang agar mudah digunakan di sakelar kasus
- Enum bisa jadi dilintasi
- Enum bisa memiliki bidang, metode, dan konstruktor
- Enum bisa diimplementasikan antarmuka
- Enum tidak dapat memperpanjang a kelas karena secara internal, itu meluas Enum kelas
Kasus Penggunaan Enum: Game Batu, Kertas, Gunting
Kami akan menggunakan enum di Jawa untuk membuat permainan masa kecil kita, batu (batu) kertas dan gunting . Kode berikut menjelaskan caranya.
paket Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} SPS kelas publik {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 mulai ... n') sementara (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('n Giliran Anda (Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk keluar): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} else if (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} lain jika (inChar == 'p') {playerMove = HandSign.PAPER} lain jika (inChar == 't') {playerMove = HandSign.STONE} lain {System.out.println ( 'nPeriksa input dan coba lagi! n') validInput = false}} while (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt's My turn: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nIt's My turn: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nIt's My turn: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor memotong kertas , Saya menang! N ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper wraps stone, I won! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone break scissor, saya menang! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Anda menang! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nJumlah percobaan: '+ numTrials) System.out.printf (' Saya menang% d (%. 2f %%) . Anda memenangkan% d (%. 2f %%).% N ', numComputerWon, 100.0 * numComputerWon / numTrials, numPlayerWon, 100.0 * numPlayerWon / numTrials) System.out.println (' Bye !, Semoga Anda menikmati ..! ' )}}
//Keluaran:
Mari kita mulai...
Gunting-Kertas-Batu
Giliran Anda (Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk berhenti):
s
Giliranku: BATU
Gunting pemecah batu, aku menang!
Gunting-Kertas-Batu
Giliran Anda (Masukkan s untuk gunting, p untuk kertas, t untuk batu, q untuk berhenti):
apa
Jumlah uji coba: 1Saya menang 1 (100.00%). Anda menang 0 (0,00%).
Bye !, Semoga Anda menikmati ..!
Dengan ini, kita mengakhiri Tutorial Java Enum ini. Saya harap Anda telah memahami Enum di Java dan implementasinya melalui beberapa contoh real-time.
Sekarang kamu sudah mengerti enum dasar-dasar melalui 'Tutorial Java Enum' lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Musim semi .
Ada pertanyaan untuk kami? Sebutkan di bagian komentar di blog 'Tutorial Java Enum' ini dan kami akan menghubungi Anda kembali secepatnya.