リフレクションを使用してメソッドを呼び出そうとしています
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" });
}
前もって感謝します