1. 程式人生 > >反射示例3:寫一個方法設定物件任意許可權的屬性的值

反射示例3:寫一個方法設定物件任意許可權的屬性的值

例3:寫一個方法設定物件任意許可權的屬性的值

寫一個方法:public void setProperty(Objectobj, String propertyName, Object value){},

此方法可將obj物件中名為propertyName的屬性的值設定為value。(這裡不知道obj物件的propertyName屬性的許可權,如果為private,則必須使用反射才能設定,所有才有了以下程式碼)

public void setProperty(Object  obj, String propertyName, Object value) throws Exception {

       // 根據物件獲取位元組碼檔案物件

       Class c = obj.getClass();

       // 獲取該物件的propertyName成員變數

       Field field = c.getDeclaredField(propertyName);

       // 取消訪問檢查

       field.setAccessible(true);

       // 給物件的成員變數賦值為指定的值

       field.set(obj, value);

    }