gpt4 book ai didi

java - 当参数是 Object[] 类型时通过反射调用方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:47 24 4
gpt4 key购买 nike

我正在使用反射调用 a class that is dynamically constructed at runtime 上的方法:

public String createJDBCProvider(Object[] args)

方法如下:

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

IDEA 警告我 为调用可变参数方法创建冗余数组

我调用的方法实际上采用了 Object[],而不是 Object ... 但我认为它们可能是等价的并且可以互换,所以我继续前进.

在运行时我得到:

java.lang.IllegalArgumentException: wrong number of arguments

看来,我的 Object[] 可能是作为 Object 序列传递的。这是怎么回事?如果是这样,我该如何强制它不这样做?

最佳答案

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

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

关于java - 当参数是 Object[] 类型时通过反射调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com