Kata pengantar
Dalam pemrograman harian kami, seringkali ada "set data" seperti itu, yang nilainya stabil dalam program, dan elemen -elemen dalam "set data" terbatas. Misalnya, tujuh elemen data dari Senin hingga Minggu membentuk "set data" seminggu, dan empat elemen data dari musim semi, musim panas, musim gugur dan musim dingin membentuk "kumpulan data" dari empat musim. Bagaimana cara menggunakan "dataset" ini dengan lebih baik di Java? Oleh karena itu enumerasi sangat berguna
Pencacahan sebenarnya adalah tipe, mirip dengan int dan char, yang berarti membatasi input saat mendefinisikan variabel. Anda hanya dapat menetapkan nilai yang ditentukan dalam enum.
ENUM Implementasi
JDK5 menyediakan implementasi jenis java enum, yang lebih banyak gula sintaksis daripada tipe baru.
Musim enum publik {musim semi, musim panas, musim gugur, musim dingin}Mari kita lihat bagaimana kode ini diimplementasikan melalui alat dekompilasi. Kode yang didekompilasi adalah sebagai berikut:
Musim kelas akhir publik memperluas enum {public static season [] values () {return (season []) $ values.clone (); } Nilai Musim Statis Publik (String S) {return (musim) enum.valueof (musim, s); } musim pribadi (String S, int i) {super (s, i); } Musim semi musim terakhir statis public; Musim panas musim terakhir statis publik; Musim gugur musim terakhir statis public; musim dingin terakhir musim final statis musim dingin; Private Static Final Season $ Values []; static {spring = musim baru ("musim semi", 0); Musim panas = musim baru ("musim panas", 1); Musim gugur = musim baru ("musim gugur", 2); Musim dingin = musim baru ("musim dingin", 3); $ Values = (musim baru [] {musim semi, musim panas, musim gugur, musim dingin}); }} Dengan mendekompilasi kode, Anda dapat menemukan:
1. Season adalah kelas biasa yang mewarisi dari Enum dan dimodifikasi melalui kata kunci final untuk menghindari warisan.
2. SPRING , SUMMER , AUTUMN dan WINTER di enum adalah contoh statis dari kelas Season dan diinisialisasi dalam metode Konstruktor <clinit> Kelas.
3. Metode values() Mengembalikan salinan variabel pribadi $VALUES[] $VALUES[] , yang juga diinisialisasi dalam metode <clinit> .
Cara menggunakan enum
1. Mode Singleton
Kita sudah tahu bahwa konstruktor kelas <clinit> hanya dapat dieksekusi oleh satu utas selama tahap inisialisasi pemuatan kelas, sehingga setiap contoh enumerasi memiliki dan hanya satu salinan di tumpukan Java. Fitur ini memudahkan enumerasi untuk menerapkan pola singleton. Ini adalah seberapa efektif penulis Java Josh Bloch menganjurkan penggunaan penerapan pola singleton.
publik enum singleton {instance;} 2. Gunakan di sakelar
3. Bidang dan Metode Kustom
Selain bidang dan metode default dalam enum, Anda dapat menyesuaikan untuk logika bisnis.
public enum enumtest {plus (" +") {@Override public int bind (int arg1, int arg2) {return arg1 + arg2; }}, Sub (" -") {@Override public int bind (int arg1, int arg2) {return arg1 - arg2; }}; operasi string terakhir; Enumtest (operasi string) {this.operation = operasi; } abstrak int bind (int arg1, int arg2);}4. Menerapkan antarmuka
Operasi Antarmuka {int Operasi (int arg1, int arg2);} enum enumtest publik mengimplementasikan operasi {plus (" +") {@Override Public Int Operation (int arg1, int arg2) {return arg1 + arg2; }}, Sub (" -") {@Override Public Int Operation (int arg1, int arg2) {return arg1 - arg2; }}; operasi string terakhir; Enumtest (operasi string) {this.operation = operasi; }} Dalam aplikasi praktis, "+" dan "-" dapat digunakan sebagai kunci, plus dan sub sebagai value , dan pra-darinya dalam hashmap dalam hashMap . Metode penggunaan spesifik adalah sebagai berikut:
Operasi operasi = hashmap.get ("+"); int result = operasi.bind (1, 2);Meringkaskan
Di atas adalah semua tentang jenis enum di java. Saya berharap bahwa melalui pengantar artikel ini untuk enum di Java, ini dapat membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan pesan untuk berkomunikasi.