我正在尝试使用反射调用方法
Method mi = TestInterface.class.getMethod("TestMethod", java.lang.String.class,java.lang.String.class,java.lang.String.class,java.lang.Object[].class);
此方法有 3 个强制字符串参数,最后一个参数,即变量参数是可选的。
但是,当我如下调用此方法时。
mi.invoke(new TestImplementation(), new Object[]{"arg1", "arg2","arg3"});
然后它给了我一个错误java.lang.IllegalArgumentException: wrong number of arguments
但最后的争论应该是可选的吧?或者这在使用反射调用方法的情况下不起作用?
代码:
public interface TestInterface {
public void TestMethod(String str, String str1, String str2, Object... objects);
}
public class TestImplementation implements TestInterface {
public void TestMethod(String str1, String str2, String str3, Object... objects) {
// ....
}
}
public static void main(String[] args) throws Exception {
// works perfectly
TestInterface obj = new TestImplementation();
obj.TestMethod("str", "str1", "str2");
// doesn't work
Method mi = TestInterface.class.getMethod("TestMethod", java.lang.String.class, java.lang.String.class,
java.lang.String.class);
mi.invoke(new TestImplementation(), new Object[] { "arg1", "arg2", "arg3" });
}
提前致谢