【发布时间】:2009-08-25 04:38:29
【问题描述】:
这是How does one access a method from an external jar at runtime?帖子的延续
McDowell 回复了代码:
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 教程,在调用之前我已经为参数提供了自己的对象,并且我已经重新加载了数组,但都没有成功。谁能解释我在这里做错了什么?
谢谢, 托德
【问题讨论】:
标签: java reflection runtime