Sunday, January 19, 2014

Mengganti access modifier (tipe variabel: private, protected, final menjadi public) di Java

Berikut ini saya berikan contoh kegunaan Reflection di java. Yakni untuk mengganti tipe access modifier. Misalnya kita mempunyai kelas yang field-nya dibuat private, maka kita dapat menggunakan reflection untuk membuatnya jadi public. Perhatikan contoh berikut

package fjr.test.reflect;
public class SemiMutable {
private final String name = "MAKAN";
public String getName(){return name; }
}
Kita dapat merubah nilai field name yang private sekaligus final dalam kelas tersebut dengan bantuan reflection di Java. Perhatikan contoh berikut

package fjr.test.reflect;
import java.lang.reflect.Field;
public class TestMutable {
public static void main(String[] args) throws Exception{
Field f = SemiMutable.class.getDeclaredField("name");
SemiMutable mutable = new SemiMutable();
try{
String ss = (String) f.get(mutable);
System.out.println(ss);
}catch(Exception e){
e.printStackTrace();
}
f.setAccessible(true); // jadi bisa diakses
SemiMutable mutable1 = new SemiMutable();
f.set(mutable1, "GIGI");
String s = (String) f.get(mutable1);
System.out.println(s);
String ss = (String) f.get(mutable);
System.out.println(ss);
}
}
Hasil eksekusinya adalah: