我想了解使用Java反射調用變量方法可能會發生什麼。比方說,我們有一個簡單的方法:用Java反射調用變量方法?
void doAllTheThings(Object ... things) {
// ...which does something with all the things...
}
我們要動態地調用它,所以我們通過反射搶方法:
Method doItAll = Superklass.getDeclaredMethod("doAllTheThings", Object[].class);
,並傳遞一個數組:
Object[] allTheThings = new Object[] { "abc", true, 15 };
doItAll.invoke(allTheThings);
現在,這似乎並不像我的直覺想象的那樣工作;特別是,當我嘗試使用這種可變參數調用方法時,我似乎獲得IllegalArgumentException
的各種色調。
我很清楚這裏有什麼東西。我的猜測是,這與變量如何編入可變參數值有關。我發現了this four year old blog post which seems to be talking about the same issue,但我無法重現那裏的'成功'案例。有關可能會發生什麼的任何想法?
非常感謝回覆,特別是對編輯。 (您在編輯中遇到的疏忽解釋了爲什麼我無法獲得示例代碼來工作!) – 2012-02-27 20:07:59