doLearn(“Generics”,2)

Generic juga bisa diterapkan pada deklarasi sebuah kelas. contoh
klasiknya adalah sebagai berikut:

public class Pair<T,V>{
	T key = null;
	V value = null;
	public Pair(T t, V v){
		this.key = t;
		this.value =v;
	}

	public V get(T t){
		return value;
	}

	@Override
	public String toString(){
		return "key = "+key+" value ="+value;
	}

	public static void main(String[] args){
		Pair<String,String> pString = new Pair<String,String>("Hello","world");
		System.out.println(pString);

		Pair<String,Integer>pStrInt = new Pair<String, Integer>("This",1);
		System.out.println(pStrInt);
	}
}

hasil dari eksekusi program diatas adalah

key = Hello value =world
key = This value =1

tentu saja generic diatas, hanya salah satu contoh penerapan generic
pada sebuah kelas.

nah bagaimana cara mengartikan generic diatas?
seperti telah kita ketahui, bahwa generic tidak merubah bytecode hasil
dari kompilasi kelas pada java, sehingga untuk lebih mudahnya kita
dapat mengasumsikan bahwa sebelum proses kompilasi java merubah dari
kode java ke bytekode, terjadi perubahan dimana (contoh 1 dari
Pair) character generic ‘V’ diubah menjadi
String,sedangkan ‘T’ menjadi String. dan pada begitu juga pada code
Pair dimana ‘T’ menjadi String, dan ‘V’ menjadi
Integer.

dari sini bisa menimbulkan pertanyaan apakah

Pair<String,String>

dan

Pair<String,Integer>

adalah 2 kelas yang sama?, yap dua contoh itu adalah 2 kelas yang
sama, hal ini bisa dibuktikan dengan


Pair<String,String> pString = new Pair<String,String>("Hello","world");
Pair<String,Integer>pStrInt = new Pair<String, Integer>("This",1);
assert pString.getClass() == pStrInt.getClass();

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: