Tutorial Java Enum: Apa itu dan Bagaimana Menerapkannya?

Artikel Tutorial Java Enum ini akan memberi Anda pengetahuan terperinci tentang konstanta Enum bersama dengan contoh praktis untuk pemahaman yang lebih baik.

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?

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

Karyawan tutorial enum 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 digantiKonstanta kelas dapat diganti
Enum tidak mendukung Penciptaan ObjekKelas mendukung Penciptaan Objek
Enum tidak dapat memperluas kelas lainKelas A dapat memperluas kelas lain
enum cAntarmuka implementSebuah 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 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.