Ric*_*ick 2 java reflection variadic-functions
我想用它getDeclaredMethod()
来找到一个带有这个签名的方法:
public void foo(String inArg1, Object... inArgs);
Run Code Online (Sandbox Code Playgroud)
使用此电话:
Class<?>[] argClasses = { String.class, Integer.class };
Method m = clazz.getDeclaredMethod("foo", argClasses);
Run Code Online (Sandbox Code Playgroud)
但它产生了一个NoSuchMethodException
例外.但是,可以调用该方法(假设您以其他方式找到它):
Object[] args = { "arg1", new Integer(2) };
m.invoke(instance, args);
Run Code Online (Sandbox Code Playgroud)
我可以将它们全部列出来,getDeclaredMethods()
然后尝试自己进行签名匹配,但这似乎很多工作.
我应该做什么?我只是缺少一些愚蠢的东西吗?
vararg参数只是数组的语法糖.该方法的签名是
foo(String, Object[]);
Run Code Online (Sandbox Code Playgroud)
并不是
foo(String, Integer);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3865 次 |
最近记录: |