当参数为Object []类型时,通过反射调用方法

Synesso:

我正在使用反射来调用在运行时动态构造的类上的方法

public String createJDBCProvider(Object[] args)

这是如何做:

Method m = adminTask.getClass().getMethod("createJDBCProvider", Object[].class);
id = (String) m.invoke(adminTask, new Object[]{ "a", "b", "c" });

IDEA警告我,我有罪redundant array creation for calling varargs method

我要调用的方法实际上采用Object[],而不是,Object ...但是我认为它们可能是等效的和可互换的,所以我努力前进。

在运行时,我得到:

java.lang.IllegalArgumentException: wrong number of arguments

因此,似乎my可能Object[]是作为Objects 序列传递的。这是怎么回事吗?如果是这样,我该如何强迫不这样做?

dasblinkenlight:

在调用方法的方式中,反射认为您正在传递三个单独的参数,而不是单个数组参数。试试这个:

id = (String) m.invoke(adminTask, new Object[]{ new Object[] {"a", "b", "c"} });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过反射调用带有参数的泛型方法时,无法将类型为System.Int32的对象转换为System.Object []

通过反射调用变量参数方法

Java如何通过以原始类型作为参数的反射来调用方法

通过反射调用具有Class <T>类型参数的私有方法

调用方法时如何传递参数(反射)?

C#反射,调用不同参数类型的方法

通过反射调用具有命名参数的方法

调用反射方法时参数数量未知

java中以Object为参数的实现方法

尝试通过反射'getAnnotatedParameterTypes()'访问时,参数注释为null

动态参数反射调用方法

如何调用参数类型为ILogger的方法

领域:无法使用参数类型为((Object.Type)'的参数列表来调用“对象”

通过反射C#调用参数中带有参数的方法

如何通过反射调用方法,并提供方法作为参数

使用反射调用具有泛型类型参数的泛型方法

将lambda作为参数分配给通过反射调用的泛型方法

(反射)在Swift中通过函数名称调用带有参数的方法

如何通过反射从不同的程序集中使用内部委托参数调用内部方法?

如何通过Scala / Java方法中的反射获取参数名称和类型?

当参数在C ++中为父类类型时,如何调用子类的方法?

通过反射调用方法时的模糊匹配

java为什么等于方法输入参数为Object

是否可以通过反射确定方法参数是否为最终参数?

使用反射调用方法时,int和Integer参数之间的区别

反射:使用通用参数调用方法

Java反射-使用int [] []参数调用方法

使用反射使用数组参数调用方法

Java反射:获取方法的返回参数的类型