The Importance of Sharing

Java Reflection


Sudah lama sekali saya tidak berbagi pengalaman melalui blog ini. Kali ini saya ingin membagi pengalaman saya ketika saya membuat sebuah aplikasi. Pada saat itu saya dihadapkan pada suatu masalah dimana saya ingin membuat suatu objek secara dinamis. Dengan kata lain objek dibuat pada saat runtime atau aplikasi sedang berjalan. Nah pada pemrograman java dikenal istilah Reflection untuk mengatasi hal ini, apa itu reflection ?

“Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine.”

Sumber :http://download.oracle.com/javase/tutorial/reflect/index.html

Jadi dengan reflection kita bisa membuat suatu objek saat runtime atau saat aplikai sedang berjalan. Tidak hanya itu saja kita bisa memanipulasi objek tersebut meskipun kita tidak tahu method atau field apa saja yang terdapat dalam objek tersebut. Namun sebaiknya jangan terlalu sering menggunakan reflection, karena dari segi performa, reflection memiliki kinerja yang lebih lambat daripada objek yang tidak dibuat menggunakan reflection. Dibawah ini adalah potongan kode sebagai gambaran penggunaan java reflection. Potongan kode dibawah ini adalah mendeskripsikan class barang.

public class Barang {
private String nama;
private int jumlah;

public void setNama(String nama){
this.nama = nama;
}

public String getNama(){
return nama;
}

public void setJumlah(int jumlah){
this.jumlah = jumlah;
}

public int getJumlah(){
return jumlah;
}
}

Lalu pada class utama atau main class saya buatkan objek dari class barang tersebut secara runtime dan saya ambil field serta method yang ada pada objek barang tersebut

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Main{
public static void main (String[]args){
try {
Class cl = Class.forName("Barang");
Constructor cnst[] = cl.getConstructors();
Field fld[] = cl.getDeclaredFields();
Method mtd[] = cl.getMethods();
System.out.println("Nama Konstruktornya");
for (int i = 0; i < cnst.length; i++) {
System.out.println(cnst[i].getName());
}
System.out.println("Nama Fieldnya");
for (int i = 0; i < fld.length; i++) {
System.out.println(fld[i].getName());
}System.out.println("Nama Methodnya");
for (int i = 0; i < mtd.length; i++) {
System.out.println(mtd[i].getName());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}

Jika dijalankan maka hasilnya akan seperti ini.

Semoga Bermanfaat

Comments on: "Java Reflection" (1)

  1. novrizky said:

    saya kok outputnya ada tulisan Barang.nama
    bagaimana cara menghilangkan kata” ‘Barang’?

    thx b4

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: