1. 程式人生 > >萬無一失地通過反射呼叫方法

萬無一失地通過反射呼叫方法

大概BeanUtils大半人都用過,MethodUtils用過的人少。最後寫一個東西需要通過反射呼叫方法,就自己通過簡單的反射來實現,測試通過,但是發現在多個ClassLoader的環境中有問題(尤其是有繼承關係的時候),明明有這個方法卻說沒有這個方法,或者獲取到了方法卻無法呼叫。

只能說我對反射的底層瞭解得還不多,做了不同的嘗試之後我放棄了,轉而使用MethodUtils中的方法:

Method method = MethodUtils.getAccessibleMethod(bean.getClass(),
                    "setProperty", new Class[] { String.class, String.class });

if(method!=null) {

MethodUtils.invokeExactMethod(bean, "setProperty",
                            new String[] { property.getName(),
                                    property.getValue() });

}

用以上程式碼來呼叫方法,絕對萬無一失