论点,我有以下接口:呼叫Method.invoke()当阵列
interface Foo {
void bar(String a, int b);
}
我想要调用Foo.bar
(上富的实现)反思。 但是,参数在数组,我不知道它的大小。
以下不起作用:
void gee(Foo someFoo, Method bar, Object[] args) {
bar.invoke(someFoo, args);
}
即不起作用,因为args
是由编译器在一个threated作为单个参数和所述阵列不是“扩展”到VARARG但被包裹(内部)更阵列单个元件,即
@Test
public void varArgTest() {
assertTrue(varArgFoo(new Object[] {1, 2}) == 1);
}
private static <T> int varArgFoo(T... arg) {
return arg.length;
}
我怎样才能调用Method.invoke()
在这种情况下,使得所述阵列被threated作为可变参数?
或更常见的问题:如何在参数在数组中时调用vararg方法,直到运行时才知道数组的大小。
你的问题不能再被删除,太多的SO用户发布了答案,否则就会把注意力集中在它上面。你可以举办一个主持人,但是你需要拿出一个*真正*的理由让他们为你删除它。 –
@Hans Passant我做过标记,但没有任何版主回复。我改变了标题以避免出现在搜索结果中,因为这个问题有误导性,即使是最多的投票答案是错误的和误导 –