1. 程式人生 > >使用java反射機制動態調用javabean的get,set方法

使用java反射機制動態調用javabean的get,set方法

pre 完成 cep doc return 形參 語言 基本 實例

轉自:https://blog.csdn.net/lixinyao5281/article/details/70146177?locationNum=14&fps=1&t=1493276880979

使用反射機制動態調用dto的get方法根據參數 屬性名 如 name 調用dto的 getName方法 並獲得返回值
Object getValue(Object dto, String name) throws Exception {
//getMethods()返回所有類或接口
Method[] m = dto.getClass().getMethods();
for (int i = 0; i < m.length; i++) {
//toLowerCase()使用默認語言環境的規則將此 String 中的所有字符都轉換為小寫
if (("set" + name).toLowerCase().equals(m[i].getName().toLowerCase())) {
//invoke對方法進行調用
return m[i].invoke(name);
}
}
return null;
}

invoke

public Object invoke(Object obj,
                     Object... args)
              throws IllegalAccessException,
                     IllegalArgumentException,
                     InvocationTargetException
對帶有指定參數的指定對象調用由此 Method 對象表示的底層方法。個別參數被自動解包,以便與基本形參相匹配,基本參數和引用參數都隨需服從方法調用轉換。

如果底層方法是靜態的,那麽可以忽略指定的 obj

參數。該參數可以為 null。

如果底層方法所需的形參數為 0,則所提供的 args 數組長度可以為 0 或 null。

如果底層方法是實例方法,則使用動態方法查找來調用它,這一點記錄在 Java Language Specification, Second Edition 的第 15.12.4.4 節中;在發生基於目標對象的運行時類型的重寫時更應該這樣做。

如果底層方法是靜態的,並且尚未初始化聲明此方法的類,則會將其初始化。

如果方法正常完成,則將該方法返回的值返回給調用者;如果該值為基本類型,則首先適當地將其包裝在對象中。但是,如果該值的類型為一組基本類型,則數組元素 被包裝在對象中;換句話說,將返回基本類型的數組。如果底層方法返回類型為 void,則該調用返回 null。

參數:
obj - 從中調用底層方法的對象
args - 用於方法調用的參數
返回:
使用參數 argsobj 上指派該對象所表示方法的結果




使用java反射機制動態調用javabean的get,set方法