JAVA getConstructor wirft NoSuchMethodException

Ich bin neu in JAVA
und ich versuche zu lernen Reflexion.
Ich möchte bestimmte Konstruktor (Kommissionierung die Beispiel-form hier)
aus meiner Klasse :

public class Example1 {
    public Example1() {
    }

    public Example1(int i) {
    }

    public Example1(String s) {
        System.out.println("using param = " + s);
    }

    public static void main(String[] args) throws Exception {  
        Class<?>[] paramTypes = String.class.getClasses();
        Constructor<Example1> ctor = Example1.class.getConstructor(paramTypes);
        ctor.newInstance("test");
    }
}

Bekomme ich NoSuchMethodException wenn Sie versuchen, zu instanziieren ctor

Was vermisse ich hier?

  • Dein code nicht wirklich werfen eine Ausnahme. Es ist auch nicht kompilieren, da Sie nicht prüfen, für Ausnahmen NoSuchMethodException und SecurityException in main().
  • Ich kann nicht sagen, was es nicht kompilieren, in meine station , durch die Art und Weise, warum das "-1" ?
  • es ist nicht kompilieren, weil der Grund, ich habe es Ihnen gesagt-es gibt Ausnahmen, für die Sie brauchen, um zu überprüfen. Beispiel in der Antwort, die ich gepostet arbeiten, sollten auf Ihre station, nicht wahr? BTW, ich habe nicht downvote Sie Ihre Frage...
  • Bitte fügen Sie throws Exception zu Ihrem main() - Methode, und fügen Versuch, tatsächlich die Klasse instanziieren (ctor.newInstance("foo")). Frage dann treffen die Website die Kriterien erfüllt und ich werde upvote es (wie es ist, es eigentlich gar nicht kompilieren/ausführen).
  • Ich vermute, dass -1 haben etwas zu tun mit deinem code-Beispiel, weil es nicht kompilierbar ist es der uns daran hindert, reproduzieren Sie Ihr problem. Dies bedeutet, dass (1) die Beantwortung Ihrer Frage ist schwieriger, (2) zukünftige Leser vielleicht nicht in der Lage, um zu bestimmen, wenn Sie stehen vor demselben problem wie du. Versuchen Sie Verbesserung Ihrer Beispiel durch das hinzufügen von throws Exception in Ihrem main Methode (wie @TomášZíma vorgeschlagen).
  • Ich versuchte, Bearbeiten Sie die Frage, aber es werden peer-reviewed. Es wird einige Zeit dauern, bis die änderungen sichtbar sind (wenn es würde akzeptiert werden).
  • Wenn ich mich richtig erinnere kann es sein sofort angenommen, durch den Autor des Beitrags. EDIT: Es scheint, dass meine Erinnerung war richtig 🙂
  • Während die bearbeiteten code jetzt kompiliert feine wirft es IllegalArgumentException, nicht NoSuchMethodException wie Sie behaupten, im Titel und in deinem Beitrag (so ist es immer noch nicht sehr nützlich für potentiell Leser auf der Suche nach Lösung für NoSuchMethodException)
  • Gemacht für die Platte, die ich nicht wirklich kümmern, die Partitur aber ich denke immer noch, meine Frage ist gut geschrieben und mit einer kleinen Menge von exp. bei der hand
  • Es ist für Leute, die finden diese Frage später.
  • Noch eine Letzte Bearbeiten 🙂 Nun, es wirft NoSuchMethodException, wie er erwähnt. Da String.class.getClasses() zurück leeres array UND es war eigentlich nicht-parametrische Konstruktor, es gefunden zu haben. Das problem ist aufgetreten, während versucht zu instanziieren (IllegalArgumentException). Ich denke, es sollte OK sein und hilfreich für andere.
  • Mein edit habe abgelehnt (Abstimmung 3:2). Ich einfach entfernt die nicht-parametrische Konstruktor. Nun die Frage ist falsch, nicht sinnvoll und sollte entfernt werden, meine Antwort war eine Verschwendung von Zeit und all die änderungen war eine Verschwendung von Zeit, daher bin ich ganz ab, um Abneigung gegen diese Seite.
  • In original-version dieses Frage es gab auch öffentliche no-argument-Konstruktor so konnte man davon ausgehen, dass Sie versucht, zu ändern, zu viel, IMO Sie Taten gute Arbeit, da Sie OP-job zu liefern Beispiel, das würden wir reproduzieren beschriebenen problem, nicht die Redakteure (da konnten Sie leicht übersehen wichtige Details, die verursacht werden, die möglicherweise problem).
  • die Frage ist falsch" Nein, es war falsch, von Anfang an. Wenn jemand eine Antwort suchen und buchen code-Beispiel ist es sein/Ihr job, um sicherzustellen, dass dieses Beispiel tatsächlich reproduziert dieses problem (und nicht einführen, andere sind). Das ist, warum ich habe diese Frage auf-halten, um zu verhindern, dass das posten von Antworten bis Frage korrigiert werden.
  • Problem mit dem Stack Overflow ist, dass die Menschen (vor allem hier) vergessen (oder wusste nicht von Anfang), dass "wir arbeiten zusammen, um eine Bibliothek von detaillierte Antworten auf jede Frage über die Programmierung". Was bedeutet dies? Wir sind nicht hier, um zu helfen, nur OP, aber jeder Leser, die möglicherweise vor ähnlichen problem. Das ist, warum wir erwarten von Fragen, um genau zu sein, so könnten wir schaffen 100% genaue Antwort. In diesem Fall Frage sollte auf Eis gelegt werden. Vermeiden Sie stressige-Situationen versuchen zu beantworten, nur Fragen, wo Sie sind in der Lage zu reproduzieren OP problem.

InformationsquelleAutor LordTitiKaka | 2015-03-22
Schreibe einen Kommentar