Lanjutan Enumeration di Java

Enumeration adalah tipe dari sebuah kelas, makanya, kita tidak harus menuliskan keyword new untuk menginisialisasikan sebuah variable yang bertipe enum. Di pemrograman java, enumeration memiliki kelebihan dari bahasa pemrograman lainya, seperti dapat diberi konstruktor, adanya method dls (dan saya lupa..hehe). Artikel ini menjelaskan sederhana bagaimana enum memiliki method-method dan konstruktor.
Ada 2 method yang sering digunakan pada enumeration adalah method :

Values();

Method ini mengembalikan isi dari keseluruhan enumeration

ValueOf(String);

Method ini mengembalikan isi dari enumeration yang sesuai dengan parameter String

Berikut ini adalah contoh program sederhananya untuk memudahkan kita memahami kedua method tersebut.

public enum Transport {
	Mobil, Truck, Kapal, Kereta, Becak
}
public class TestingEnum2 {
	public static void main(String args[]){
		
		System.out.println("Ini adalah isi dari enum Transport\ndengan menggunakan method values()");
		Transport aryTransport[] = Transport.values();
		for(Transport t : aryTransport)
			System.out.println(t);
		
		Transport Tp;
		
		Tp = Transport.valueOf("Becak");
		System.out.println("Kendaraan yang digunakan adalah "+Tp);
	}
}

Keluaran :
Ini adalah isi dari enum Transport
dengan menggunakan method values()
Mobil
Truck
Kapal
Kereta
Becak
Kendaraan yang digunakan adalah Becak

Dari kode diatas, kamu pasti mudah memahaminya. aryTransport[] adalah variable array yang dibuat lalu diisi dari keseluruhan isi Transport dengan pemanggilan method values();.

Sudah mengerti mengenai kedua method diatas, sekarang saya coba jelaskan membuat konstruktor dan method buatan sendiri pada enumeration.
Isi constant dari sebuah enumeration contohnya Mobil, Kereta dan seterusnya adalah sebuah objek yang bertipe enumeration. Lalu sebuah enumeration dapat mendefinisikan konstruktor, menambahkan sebuah method dan variable tambahan. Ketika sebuah konstruktor dipanggil, maka konstruktor tersebut secara otomatis memanggil masing-masing constant dari enumeration yang dibuat. Tiap constant enumeration dapat memanggil method yang dibuat oleh enumeration. Berikut ini adalah contoh penggunaan enumeration dengan konstruktor, method tambahan dan penggunaan variable di enumeration.

public enum Transport {
	Mobil(65), Truck(45), Kapal(120), Kereta(80), Becak(15);
	
	private int kec;
	
	Transport(int k){
		kec = k;
	}
	
	int getKec(){
		return kec;
	}
}
public class testingEnum3 {
	public static void main(String args[]){
		System.out.println("Kecepatan dari Mobil adalah "+Transport.Mobil.getKec());
		
		System.out.println("Kecepatan masing-masing kendaraan :");
		for(Transport Tp : Transport.values()){
			System.out.println(Tp+" memiliki kecepatan "+Tp.getKec());
		}
	}
}

Keluaran :

Kecepatan dari Mobil adalah 65
Kecepatan masing-masing kendaraan :
Mobil memiliki kecepatan 65
Truck memiliki kecepatan 45
Kapal memiliki kecepatan 120
Kereta memiliki kecepatan 80
Becak memiliki kecepatan 15

Dari kode diatas, hal penting yang mesti kita analisis adalah terdapat konstruktor

Transport(int s){
kec = s;
}

Secara otomatis, akan memanggil tiap konstan dari enum Transport. Yang harus diperhatikan dari konstrukor ini adalah terdapat semicolon yang mesti disisipi setelah akhir dari constant enum.

Mobil(65), Truck(45), Kapal(120), Kereta(80), Becak(15);

Method getKec(), adalah method mengembalikan nilai dari kecepatan dari tiap constant.
Untuk mengambil kecepatan dari salah satu constant enum, kita bisa menuliskan kode seperti kode diatas

Transport.Mobil.getKec();

Seperti itulah penggunaan konstruktor dan beberapa method dari enumeration.
Hal penting lagi yang kadang digunakan dalam penggunaan enumeration adalah penggunaan method compareTo(); dan ordinal();.
Untuk jelasnya mari lihat kode dibawah ini :

public enum Transport {
	Mobil, Truck, Kapal, Kereta, Becak
}

public class TestingEnum4 {
	public static void main(String args[]){
		Transport Tp, Tp2, Tp3;
		
		System.out.println("Indeks dari tiap konstant enum Transport : ");
		
		for(Transport T : Transport.values()){
			System.out.println(T+" berindeks ke-"+T.ordinal());
		}
		
		Tp = Transport.Kereta;
		Tp2 = Transport.Truck;
		Tp3 = Transport.Kereta;
		
		if(Tp.compareTo(Tp2)  0)
			System.out.println("index "+Tp2+" lebih kecil dari index "+Tp);
		
		if(Tp.compareTo(Tp3) == 0)
			System.out.println("index "+Tp+" sama dengan index "+Tp3);
	}
}

Keluaran :

Indeks dari tiap konstant enum Transport :
Mobil berindeks ke-0
Truck berindeks ke-1
Kapal berindeks ke-2
Kereta berindeks ke-3
Becak berindeks ke-4
index Truck lebih kecil dari index Kereta
index Kereta sama dengan index Kereta

Dari kode diatas, method ordinal() jelas sekali penggunaanya adalah mengetahui index dari constant enum, bila enum seperti

public enum Transport {
Mobil, Truck, Kapal, Kereta, Becak
}

Maka, mobil memiliki index 0, truck memiliki index 1 dan seterusnya.

Bila method compareTo(), adalah method untuk membandingkan index dari constant enum.

if(Tp.compareTo(Tp2) < 0)

Kaidahnya seperti ini, bila index Tp lebih kecil dari Tp2 maka menghasilkan nilai negative, bila Tp lebih besar dari Tp2 maka menghasilkan nilai positif dan bila Tp sama dengan Tp2 maka menghasilkan nilai 0.

Tp berisi constant Kereta sedangkan Tp2 berisi constant dari Truck. Kita tahu bahwa index dari kereta adalah 3 sedangkan Truck berindex 1. Lalu membandingkan, apakah 3 lebih kecil dari 1 atau lebih besar??? Ternyata 3 lebih besar dari 1, jadi menghasilkan nilai positif. Lalu nilai positif ini dibandingkan dengan

if(Tp.compareTo(Tp2) < 0)

if(positif < 0)??? False,

if(Tp.compareTo(Tp2) > 0)

if(positif > 0) ??? True,

sampe sini, moga dimengerti yach,,bagi2 ilmu itu indah lho...
satu hal penting lagi,,serius ini yang terakhir adalah sebuah enumeration tidak dapat mewarisi sebuah kelas lain, dan enumeration juga tidak dapat dijadikan superkelas.

Iklan

6 thoughts on “Lanjutan Enumeration di Java

  1. bingung gan,saya dapet tugas suruh nyari enumeration,tapi bukan enumeration yang kaya di atas tapi enumeration yang mirip iterator…sebenernya enum ini tipe data atau methode buat mencacah..??

Silahkan Komentar...

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s