1. 程式人生 > >JAVA反射——給屬性賦值

JAVA反射——給屬性賦值

使用反射的機制來給私有的屬性賦值,這個原理在許多ORM的元件中都有應用,下面是一段掩飾程式碼

public class FieldTest {

public static void main(String[] args) throws Exception {

Class clazz = Class.forName("com.snowdi.reflection.Student");

Object obj = clazz.newInstance();//通過反射建立物件

// 呼叫getDeclaredField("name") 取得name屬性對應的Field物件

Field f = clazz.getDeclaredField("name");

// 取消屬性的訪問許可權控制,即使private屬性也可以進行訪問。

f.setAccessible(true);

// 呼叫get()方法取得對應屬性值。

System.out.println(f.get(obj));  //相當於obj.getName();

// 呼叫set()方法給對應屬性賦值。

f.set(obj, "lkl");  //相當於obj.setName("lkl");

// 呼叫get()方法取得對應屬性修改後的值。

System.out.println(f.get(obj));

}

}