gpt4 book ai didi

java - 如何在运行时从外部 jar 访问方法(第 2 部分)?

转载 作者:行者123 更新时间:2023-12-04 07:04:29 24 4
gpt4 key购买 nike

这是帖子的延续How does one access a method from an external jar at runtime?

麦克道尔用代码回应:

public class ReflectionDemo {

public void print(String str, int value) {
System.out.println(str);
System.out.println(value);
}

public static int getNumber() { return 42; }

public static void main(String[] args) throws Exception {
Class<?> clazz = ReflectionDemo.class;
// static call
Method getNumber = clazz.getMethod("getNumber");
int i = (Integer) getNumber.invoke(null /* static */);
// instance call
Constructor<?> ctor = clazz.getConstructor();
Object instance = ctor.newInstance();
Method print = clazz.getMethod("print", String.class, Integer.TYPE);
print.invoke(instance, "Hello, World!", i);
}
}

我添加了以下方法:
public void print2(String[] strs){
for(final String string : strs ){
System.out.println(string);
}
}

并修改 main 以包含以下两行:
Method print2 = clazz.getDeclaredMethod("print2", new Class[]{String[].class});
print2.invoke(instance, new String[]{"test1", "test2"});

然而,而不是看到

测试1
测试2

我收到以下异常:

线程“main”中的异常java.lang.IllegalArgumentException:参数数量错误

我已经阅读了 Sun Java 教程,在调用之前我已经给了参数它们自己的对象,并且我已经重新加载了数组,但都没有成功。谁能解释我在这里做错了什么?

谢谢,
托德

最佳答案

这就是可变参数的问题!

print2.invoke(instance, new Object[] { new String[] {"test1", "test2"}});

关于java - 如何在运行时从外部 jar 访问方法(第 2 部分)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324511/

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