我想了解使用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