Wenn die Methode dieses Objekts nur Argumente von String oder einen beliebigen kompatiblen Typ für String hat, können Sie Argumente als Ganzes übergeben. Änderung String [] args = {"arg1", "arg2" ...}; bis Objekt [] args = {"arg1", "arg2" ...}; wie folgt: method.invoke (obj, args);
stellen Sie sicher, dass, wenn Sie das Methodenobjekt erhalten: class.getMethod ("Methode", Typen); Die Typen arg müssen mit der Anzahl und den Argumenten übereinstimmen, die übergeben werden. zum Beispiel: Klasse [] types = {String.class, String.class, String.class}; passt zu Objekt [] args = {"arg1", "arg2", "arg3"}; aber nicht mit Object [] args = { "arg1", „arg2};
dynamische
unter der Annahme, dass die Methoden aufrufen nur Strings akzeptieren psedo (sonst Sie komplexere Mapping benötigen) Code:
Methode:.
otbtain den Namen der Methode
ex reichlich: print // auf variable Methoden gespeichert
Args:
get-Liste oder ein Array von den Benutzereingaben
Beispiel: args = { "bla", "bla" ...}
Typen:
mit Typen arraylist.
für jeden arg, Sie arraylist.add (String.class) // oder jede andere Klasse, wenn kein String
Klasse [] types = {};
Typen = arraylist.toArray (Typen);
Jetzt haben Sie alles, was Sie rufen müssen:
someClass.getMethod (methoden, Typen).aufrufen (instanceofSomeClass, args); // dies
arbeitet, was immer Argumente gibt der Benutzer
Was die Definition des Verfahrens ist? –
Sind die Inhalte des String-Arrays Namen von Variablen im realen Programm? Das kannst du nicht tun. –
Es ist eine andere Methode, die von der Benutzereingabe abhängt, ich habe 5 Klassen, die mit einer 'execute' Methode eingerichtet sind, und je nach Benutzereingabe wird die entsprechende Klasse erstellt. Diese Methoden haben alle unterschiedliche Parametertypen, die ich in einem String-Array habe, daher die Frage. @LouisWasserman Nein .... es ist die Argumente, die ich versuche, zu übergeben. – gptt916