Ich habe gerade den folgenden minimalistischen Testfall:Was ist falsch an meinem Aufruf von Method.invoke?
package testcase;
public class Main
{
public static void main(String[] args)
throws Throwable
{
if (args.length == 0)
Main.class.getMethod("main", String[].class).invoke(null, new String[] { "test" });
}
}
Es sollte nur laufen, ohne Ausgang und keine Ausnahme. Die Methode main
sollte sich selbst über Reflektion aufrufen. Jedoch habe ich die folgende Ausnahme erhalten:
Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at testcase.Main.main(Main.java:10)
Und ich kann nicht herausfinden, warum ...
Wenn Sie dies kompilieren, erhalten Sie eine Warnung vom Compiler, die Ihnen einen Hinweis darauf gibt, was falsch ist. – Jesper