IllegalArgumentException: falsche Anzahl von Argumenten in Java-Konstruktor.newInstance()
Betrachten Sie den folgenden code,
public class StartUp {
public StartUp(String[] test){}
public static void main(String[] args) throws Exception{
Constructor cd = StartUp.class.getConstructor(String[].class);
System.out.println(cd.newInstance(new String[]{}).toString());
}
}
Was ist Los mit ihm? Ich bekomme die folgende Exception:
Exception in thread "main" java.lang.IllegalArgumentException: falsche Anzahl von Argumenten
bei der sun.reflektieren.NativeConstructorAccessorImpl.newInstance0(Native-Methode)
bei der sun.reflektieren.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
bei der sun.reflektieren.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
bei java.lang.reflektieren.Konstruktor.newInstance(Constructor.java:513)
bei com.test.StartUp.main(Start.java:10)
InformationsquelleAutor xandy | 2011-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
String[]
wird implizit inObject[]
genommen und als ein leeres array von Argumenten, anstatt als ein einzelnes argument, das ein leeres array. Versuchen Sie dies:oder
oder sogar vermeiden der compiler zu erstellen, das array für Sie:
Im Grunde ist es eine Mischung von varargs Handhabung und array-Kovarianz 🙁
InformationsquelleAutor Jon Skeet
Könnten Sie dp4j verbose-option, um Ihre Frage zu beantworten, und die richtige Reflexion-code, den Sie benötigen:
InformationsquelleAutor simpatico