JAVA反射——給屬性賦值
阿新 • • 發佈:2019-02-10
使用反射的機制來給私有的屬性賦值,這個原理在許多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));
}
}