Ich weiß, wie man eine Methode durch Reflexion aufruft, sie erstellt eine neue Instanz. Aber ich kann das nicht tun. Da meine Klasse die Runnable-Schnittstelle implementiert hat, muss ich die Methode run in einem neuen Thread starten. Das ist also nicht erwünscht. Mein Code ist jetzt:Wie kann eine nicht statische Methode durch Reflektion aufgerufen werden, ohne dass eine neue Instanz in derselben Klasse erstellt wird?
public class Validation() impelements Runnable {
Validation (String[] methodName) {
if(methodName[2].equals("deposit")){
this.deposit(account);
}
else if (methodName[2].equals("withdraw")){
this.withdraw(account);
}
// lots of if-else
}
//..... other methods , deposit() , withdraw() , run();
}
ich so etwas wie dieses benötigen (ohne eine neue Instanz der Klasse zu schaffen, aber es sollte Reflexion sein):
UPDATE:
if-else ersetzen soll mit etwas wie folgt aus:
try {
this.invoke(methodName[2] , account);
} catch (Exceotion ex){
// something
}
ich nicht statisch Ablagerung oder w verwenden können ithdraw-Methoden verwenden sie nicht statische Variablen.
In php wir haben simething wie folgt aus:
$methodName = $array[2] ;
$this.methodName();
Meine Frage ist:
Wie eine nicht-statische Methode durch Reflexion aufzurufen, ohne die Schaffung neuer Instanz in demselben Klasse?
Sie können nicht. Es ist unmöglich. Sie benötigen eine Instanz, um Instanzmethoden aufzurufen. – Savior
Sie können das nicht tun. Denken Sie nur darüber nach - wie können Sie eine Objektmethode (die ihren Zustand ändern kann) ohne das Objekt aufrufen? –
Fragen Sie, wie man eine Methode durch Reflexion an einem _existing_ Objekt aufruft? –