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
このように varargs を使用してメソッドを呼び出そうとすると、さまざまな色合いが得られるようです。
ここには明らかに欠けているものがあります。私の推測では、これは変数が varargs にマーシャリングされる方法に何らかの形で関連しています。同じ問題について話しているように見えるこの 4 年前のブログ投稿を見つけましたが、そこで「成功した」ケースを再現できません。ここで何が起こっているのかについて何か考えはありますか?