使用java反射機制動態調用javabean的get,set方法
阿新 • • 發佈:2018-11-22
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
如果底層方法所需的形參數為 0,則所提供的
args
數組長度可以為 0 或 null。如果底層方法是實例方法,則使用動態方法查找來調用它,這一點記錄在 Java Language Specification, Second Edition 的第 15.12.4.4 節中;在發生基於目標對象的運行時類型的重寫時更應該這樣做。
如果底層方法是靜態的,並且尚未初始化聲明此方法的類,則會將其初始化。
如果方法正常完成,則將該方法返回的值返回給調用者;如果該值為基本類型,則首先適當地將其包裝在對象中。但是,如果該值的類型為一組基本類型,則數組元素不 被包裝在對象中;換句話說,將返回基本類型的數組。如果底層方法返回類型為 void,則該調用返回 null。
- 參數:
obj
- 從中調用底層方法的對象args
- 用於方法調用的參數- 返回:
- 使用參數
args
在obj
上指派該對象所表示方法的結果
使用java反射機制動態調用javabean的get,set方法