gpt4 book ai didi

java - method.invoke 上的参数数量错误

转载 作者:行者123 更新时间:2023-11-29 04:18:14 29 4
gpt4 key购买 nike

我目前有这段代码:

public class Pants {
public static void main(String[] args) {
Pants pants = new Pants();
pants.eat(10, 10.3, "Nice.");

Object[] params = {(long)10, 10.3, "Nice."};
Method eatMethod = pants.getClass().getMethods()[0];
try
{
eatMethod.invoke(pants, params);
} catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
}

public void eat(long amount, double size, String name) {
System.out.println("You ate");
}
}

它总是抛出

IllegalArgumentException: wrong number of arguments.

这也发生在其他方法上。我在 eat() 中使用了与 method.invoke 中相同的参数,并且类型相同。错误在

上抛出
eatMethod.invoke(pants, params);

最佳答案

正如评论所说。我们不知道哪个方法是 pants.getClass().getMethods()[0]。尝试使用 eatMethod.getName() 获取名称,看看是否真的是 eat 方法。如果不是你可以试试这个。

 java.lang.reflect.Method method;
method = pants.getClass().getMethod("eat", Long.class, Double.class, String.class);
.
.
.
method.invoke(pants,params );

还...检查 Java Docs方法从不排序

The elements in the returned array are not sorted and are not in any particular order.

所以有时您的代码可能有效,有时则无效。

关于java - method.invoke 上的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50951861/

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