Ich muss etwas sehr grundlegendes vermissen. Wenn ich versuche, während eines Methodenaufrufs ein Array irgendeiner Art zu übergeben, erhalte ich einen Fehler. Aber wenn ich es normalerweise mache, funktioniert es.IllegalArgumentException beim Übergeben eines Array als Parameter während des Methodenaufrufs
Dies ist der komplette Code,
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception {
// Normal
MyClass.sayHello(new String[] {"StackOverflow"});
// Reflection
Method m = MyClass.class.getMethod("sayHello", String[].class);
m.invoke(null, new String[]{"StackOverflow"});
}
static class MyClass {
public static void sayHello(String[] args) {
System.out.println("Hello " + args[0]);
}
}
}
Die Exception
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:497)
at Main.main(Main.java:11)
String...
nicht funktioniert entweder btw geworfen ausfällt.
TLDR: Wie immer RTFD – mvd
Ja, ich habe die gleiche Warnung. Es macht keinen Sinn, warum Java ein Array von Array-Argumenten benötigt, aber es funktioniert. Vielen Dank! – TomTom
@ TomTom: Es macht Sinn: Es braucht ein Array, weil es mehrere Argumente geben kann. Das einzige Element dieses Arrays ist selbst ein Array, da der Parameter der Methode ein Array ist. Versuchen Sie, der Methode einen weiteren Parameter hinzuzufügen, und es wird mehr Sinn ergeben. Und in Zukunft * Warnungen * nie ignorieren :) –