当参数为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 条评论
登录 后参与评论

相关文章