2
這是交How does one access a method from an external jar at runtime?如何在運行時從外部jar訪問方法(part2)?
道爾迴應代碼的延續:
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);
}
}
和改性主要包括以下兩行:
Method print2 = clazz.getDeclaredMethod("print2", new Class[]{String[].class});
print2.invoke(instance, new String[]{"test1", "test2"});
然而,也看不到
test1的
test2的
我得到以下異常:線程 「主」 java.lang.IllegalArgumentException異常
異常:錯誤的參數數目
我有通過Sun Java教程,我已經在調用之前給出了他們自己的對象的參數,並且我已經重新加載了這些數組,但都沒有成功。任何人都可以解釋我在這裏做錯了嗎?
感謝, 託德
是啊,調用通知發生在(對象,對象...),這意味着第二個參數應該在技術上是一個Object [],因此,所有你傳遞的參數必須通過如上圖所示。呸。 :-D – 2009-08-24 20:42:32
@tackline,@brent,謝謝。在這方面,我在頭髮部門輕得多。膠水,我需要膠水! – Todd 2009-08-24 21:34:50