Object Oriented Programming – Reflection is a Magic

Reflection yang berarti refleksi sangat berguna ternyata. Saya menggunakannya untuk invoke method di signatory workflow dari setiap Class yang implement base interface. Jadi misal Class A extended ke A1, A2, A3, dst dan setiap A1, A2, A3, dst implement AiFACE saya dapat invoke method-methodnya tanpa perlu deklarasi instance object dari setiap class tersebut. Gampangnya, magic! Panggil object, anggap sebagai sebuah class, terus invoke methodnya.

Rata-rata OOP semua ada reflectionnya, jika tidak ada berarti “katrok” kata mas Tukul. Berikut cara menggunakan reflection dalam Java.

private void invokeMethod(Object obj, String methodName) throws Exception {
   	Class<?> cls = Class.forName(obj.getClass().getName()); //anggap sebagai sebuah class
   	Object rflObj = (Object) JsfBase.getSession(SESSION_DTO); //yang ini hiraukan, potongan dari framework aplikasi buatan saya
   	//pastikan rflObj adalah / extend dari cls, kalo ga pasti casting error
   	Class<?> noparams[] = {}; //methodnya di class tsb ga ada parameternya
   	Method method = cls.getDeclaredMethod(methodName, noparams); //dapetin methodnya
	method.invoke(rflObj); //invoke lewat object
}

Begitulah snippetnya. Sori jika tidak jelas, soalnya saya memposting tulisan ini sebagai catatan dan saya sendiri sebetulnya juga sedang (mulai) belajar. Tapi asli magic!

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 )

Google+ photo

You are commenting using your Google+ 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 )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.