Pencacahan adalah bentuk parameter standar, sehingga Anda dapat secara eksplisit mengganti konsep fuzzy yang dapat ditimbulkan oleh parameter interm. Pencacahan seperti kelas dan array tanpa mempertimbangkan ketidakcocokan tipe.
Sebagai kata kunci baru yang diperkenalkan oleh Sun, Enum terlihat seperti kelas khusus. Ini juga dapat memiliki variabel sendiri, menentukan metode sendiri, dan mengimplementasikan satu atau lebih antarmuka. Ketika kami mendeklarasikan jenis enum, kita harus memperhatikan bahwa tipe enum memiliki beberapa karakteristik sebagai berikut.
1. Ia tidak dapat memiliki konstruktor publik, dan melakukannya dapat memastikan bahwa kode klien tidak dapat membuat instance baru dari enum.
2. Semua nilai enum bersifat publik, statis, final. Perhatikan bahwa ini hanya untuk nilai enum. Kami dapat mendefinisikan variabel non-enumer lainnya dari jenis apa pun seperti mendefinisikan variabel di kelas biasa. Variabel -variabel ini dapat dibuat dengan pengubah apa pun yang Anda inginkan.
3. ENUM mengimplementasikan antarmuka Java.lang.Compparable secara default.
4. Enum mengesampingkan metode tostring, jadi jika kita memanggil color.blue.tostring (), kita mengembalikan string "biru" secara default.
5. ENUM memberikan nilai metode, yang sesuai dengan metode ToString. Nilai panggilan ("biru") akan mengembalikan warna. Blue. Karena itu, kita harus memperhatikan hal ini ketika menulis ulang metode tostring sendiri. Dengan kata lain, kita harus menulis ulang nilai metode yang sesuai.
6. Enum juga menyediakan metode nilai, yang memungkinkan Anda untuk dengan mudah melintasi semua nilai enum.
7. Enum juga memiliki metode oridinal, yang mengembalikan urutan nilai enum di kelas enum. Pesanan ini tergantung pada urutan deklarasi nilai enum. Di sini color.red.ordinal () mengembalikan 0.
Setelah memahami fitur -fitur dasar ini, mari kita lihat bagaimana menggunakannya.
1. Melintasi semua nilai enum. Mengetahui bahwa ada metode nilai, kita dapat menggunakan loop foreach untuk melintasi nilai enum dengan cara yang akrab.
untuk (Color C: Color.Values ()) System.out.println ("Temukan Nilai:" + C);2. Tentukan metode dan variabel dalam enum. Misalnya, kita dapat menambahkan metode untuk mewarnai untuk mengembalikan warna secara acak.
Publik Enum Color {Red, Green, Blue; Nomor int statis pribadi = color.values (). Panjang; warna public static getRandomColor () {long random = system.currentTimeMillis () nomor %; switch ((int) acak) {case 0: return color.red; Kasus 1: return color.green; case 2: return color.blue; Default: return color.red; }}}Dapat dilihat bahwa tidak ada perbedaan antara mendefinisikan variabel dan metode dalam jenis enum dan mendefinisikan metode dan variabel di kelas biasa. Satu -satunya hal yang perlu dicatat adalah bahwa definisi variabel dan metode harus ditempatkan setelah semua definisi nilai enum, jika tidak kompiler akan memberikan kesalahan.
3. Override Tostring, Nilai Metode
Kita sudah tahu bahwa ENUM menyediakan metode seperti ToString, Nilai, dll. Berkali -kali kita perlu mengganti metode ToString default, jadi bagaimana kita melakukannya? Bahkan, ini tidak berbeda dengan mengesampingkan metode tostring dengan kelas biasa.
…. string publik toString () {switch (this) {case red: return "color.red"; case green: return "color.green"; case blue: return "color.blue"; Default: return "Unknow Color"; }}….Saat ini, kita dapat melihat bahwa yang dicetak dengan kode traversal sebelumnya adalah
Color.red color.green color.blue
Alih-alih
Biru hijau merah.
Anda dapat melihat bahwa tostring memang ditimpa. Secara umum, ketika menimpa tostring, kita juga harus menimpa metode nilai untuk mempertahankan konsistensi mereka.
4. Menggunakan konstruktor
Meskipun Enum tidak dapat memiliki konstruktor publik, kita masih dapat mendefinisikan konstruktor pribadi dan menggunakannya di dalam enum. Mari kita gunakan contoh warna.
public enum color {red ("this is red"), green ("this is green"), blue ("this is blue"); Private String Desc; Color (string desc) {this.desc =} public string getDesc () {return this.desc; }}Di sini kami memberikan informasi penjelasan untuk setiap warna, dan kemudian mendefinisikan konstruktor untuk menerima informasi penjelasan ini.
Perlu dicatat bahwa konstruktor tidak dapat dipublikasikan atau dilindungi, sehingga dapat memastikan bahwa konstruktor hanya dapat digunakan secara internal, dan kode klien tidak dapat melakukan instance dari nilai enum. Ini juga sepenuhnya masuk akal, karena kita tahu bahwa nilai -nilai enum hanyalah konstanta final statis publik.
5. Menerapkan antarmuka tertentu
Kita sudah tahu bahwa ENUM dapat mendefinisikan variabel dan metode. Perlu menerapkan antarmuka dan mengimplementasikan antarmuka seperti kelas biasa. Saya tidak akan memberi contoh di sini.
6. Tentukan metode enumerasi Anda sendiri.
Kami sebelumnya melihat bahwa beberapa metode dapat didefinisikan untuk enum, tetapi pada kenyataannya kami bahkan dapat mendefinisikan metode untuk setiap nilai enum. Dengan cara ini, contoh kami sebelumnya tentang overriding tostring dapat ditulis ulang seperti ini.
public enum color {red {public string toString () {return "color.red"; }}, Hijau {public string toString () {return "color.green"; }}, Biru {public string toString () {return "color.blue"; }}; }Secara logis, ini lebih jelas dari metode tostring asli yang menyediakan 'global ".
Secara umum, enum, sebagai tipe yang sama sekali baru, berharap dapat membantu programmer menulis kode yang lebih sederhana dan lebih mudah dipahami.
Orang-orang umumnya tidak perlu menggunakan beberapa fitur canggih ENUM, jika tidak, ia akan bertentangan dengan niat asli yang sederhana dan mudah dipahami.
Artikel di atas secara singkat berbicara tentang peran dan manfaat enumerasi JAVE adalah semua konten yang saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.