Saat mendefinisikan jenis enum, Anda pada dasarnya mendefinisikan kelas, tetapi banyak detail diisi oleh kompiler untuk Anda, jadi sampai batas tertentu, peran kata kunci enum seperti kelas atau antarmuka.
Saat Anda mendefinisikan tipe enum menggunakan "enum", jenis yang Anda tentukan pada dasarnya diwarisi dari kelas java.lang.enum, dan anggota masing -masing enum sebenarnya adalah instance dari jenis enum yang Anda tentukan. Mereka semua default ke final, sehingga Anda tidak dapat mengubahnya, mereka juga anggota statis, sehingga Anda dapat menggunakannya langsung melalui nama jenis, dan tentu saja, yang paling penting, mereka semua bersifat publik.
Misalnya:
Opconstants.javapublic enum opconstants {turn_left, turn_right, shoot} Dalam contoh ini, opconstants mewarisi dari java.lang.enum. Setiap anggota enum seperti turn_left, turn_right, shoot. Mereka semua adalah contoh objek opconstants, yaitu, instance objek. Secara alami ada beberapa metode di atas. Misalnya, metode tostring () ditimpa, yang memungkinkan Anda untuk secara langsung mendapatkan deskripsi string dari nilai enum. Metode nilai () yang ditentukan oleh objek ENUM memungkinkan Anda untuk mendapatkan semua instance enum dan meneruskannya kembali dalam array. Anda menggunakan dua metode ini untuk hanya menampilkan konten opconstants:
Showenum.javapublic class showEnum {public static void main (string [] args) {for (opconstants constant: opconstants.values ()) {System.out.println (constant.toString ()); }}} Pada dasarnya, println () akan secara otomatis memanggil tostring (), jadi sebenarnya tidak apa -apa untuk tidak menulis tostring (). Hasil eksekusi adalah sebagai berikut:
Turn_leftturn_rightshoot
Anda dapat menggunakan metode "==" atau setara () untuk membandingkan objek ENUM. "" == "" akan membandingkan apakah objek enum yang Anda berikan adalah sama (yaitu, menempati lokasi memori yang sama), sedangkan sama () pada dasarnya akan membandingkan konten dua objek enum. Secara default, itu akan dibandingkan berdasarkan nilai string enum.
Metode ValueOf () memungkinkan Anda untuk mencoba mengonversi string yang ditentukan menjadi instance enum. Anda dapat menggunakan metode compareTo (), yang dapat membandingkan urutan dua objek enum saat enumerasi. Inilah contohnya
Showenum.javapublic class showenum {public static void main (string [] args) {enumCompareto (opconstants.valueof (args [0]))); } public static void enumCompareto (Opconstants Constant) {System.out.println (Constant); untuk (opconstants c: opconstants.values ()) {System.out.println (constant.compareto (c)); }}} Hasil Eksekusi:
$ java showenum turn_right
Turn_right10-1
Lewati nilai positif, menunjukkan bahwa urutan sebelum objek enum dibandingkan, setelah nilai negatif ditunjukkan, dan 0 berarti bahwa posisi dua nilai enum yang saling komparatif adalah sama.
Untuk setiap anggota enumerasi, kita dapat menggunakan metode ordinal () untuk mendapatkan indeks posisi dalam urutan enumerasi, dan default dimulai dengan 0, misalnya:
Showenum.javapublic class showenum {public static void main (string [] args) {for (opconstants c: opconstants.values ()) {System.out.printf ("%d%s%n", c.ordinal (), c); }}} Hasil Eksekusi:
0 turn_left1 turn_right2 shoot
Kata kunci enum dapat digunakan untuk menentukan kelas enum, dan konstanta yang relevan dapat ditulis dalam kelas. Mari kita lihat contoh di bawah ini.
Kode berikut:
class testclass {private testClass () {} // Tentukan konstruktor pribadi, dan tidak dapat instantiate objek dari luar // berikan dua contoh a dan b public static final testclass a = new testClass (); public static final testclass b = new testclass ();}Anda dapat menggunakan tipe enum sebagai gantinya:
enum testclass01 {a, b;}penggunaan:
Enum juga dapat memiliki konstruktor, bidang, dan metode:
enum testClass02 {a ("a") // Saat membuat objek, lulus dalam parameter konstruktor, b ("b"); nilai string pribadi; private testClass02 (nilai string) {this.value = value; } public String getValue () {return this.value; }}Pencacahan juga dapat memiliki metode abstrak:
enum testClass03 {a () {// mengimplementasikan metode abstrak type public void () {System.out.println ("Luar Biasa"); }}, B () {public void type () {System.out.println ("Good"); }}; Tipe abstrak publik (); // Tentukan metode abstrak}Metode Uji:
test kelas publik02 {public static void main (string [] args) {print (testclass02.a); // jeda dalam parameter enum} public static void print (testClass02 t) {system.out.println (t.getValue ()); } enum testClass02 {a ("a"), b ("b"); nilai string pribadi; private testClass02 (nilai string) {this.value = value; } public String getValue () {return this.value; }}}Hasil Menjalankan:
Aauthor: Mulai tanda: Selama Anda masih mencoba, itu bukan kegagalan.