論點,我有以下接口:呼叫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我做過標記,但沒有任何版主回覆。我改變了標題以避免出現在搜索結果中,因爲這個問題有誤導性,即使是最多的投票答案是錯誤的和誤導 –