我有以下接口:
interface Foo {
void bar(String a, int b);
}
我想要调用Foo.bar
(上富的实现)反思。 然而,自变量是数组 ,我不知道它的大小。
以下不工作:
void gee(Foo someFoo, Method bar, Object[] args) {
bar.invoke(someFoo, args);
}
不工作,因为args
是由编译器在一个以上的阵列与单个元件,即threated作为单个参数和所述阵列不是“展开”,以可变参数而被包裹(内部)
@Test
public void varArgTest() {
assertTrue(varArgFoo(new Object[] {1, 2}) == 1);
}
private static <T> int varArgFoo(T... arg) {
return arg.length;
}
我怎么能叫Method.invoke()
在这种情况下,这样的阵列threated为可变参数?
或者更一般的问题:我如何调用可变参数的方法时参数是数组我不知道该阵列,直到运行时的大小。