Der Code, den Sie gegeben haben, werden die Klassen der Argumente (dh die Werte zur Verfügung gestellt, um das Verfahren) finden - aber diese können niemals Schnittstellen sein; Sie werden immer konkrete Implementierungen sein. (Man kann nie passieren „nur einen Satz.“ - immer einen Verweis auf ein Objekt, das eine Instanz einer Implementierung ist der Schnittstelle, oder eine Nullreferenz)
Es klingt wie Sie die Typen von der wollen Parameter - die Sie über die Reflexion erhalten würden, wenn Sie absolut mussten, die Method
finden und dann die Parameter davon mit getParameterTypes
bekommen. Aber da Sie innerhalb der Methode sind, kennen Sie bereits die Parameter-Typen, weil sie an der Spitze der Methode sind ... Ich bin mir nicht sicher, der beste Weg, "die derzeit ausführende" Methode zu finden, wenn das ist was du willst.
Wenn Sie nur versuchen, die Klasse Set
zugeordnet werden, können Sie natürlich Set.class
verwenden. Aber es ist auch nicht wirklich klar, was Sie zu tun versuchen.
EDIT: Okay, nach Ihrem Kommentar zu urteilen, gibt es einige logische Probleme mit dem, was Sie versuchen zu tun. Von den Werten von Argumenten, auf die Methode aufgerufen werden würde, ist im allgemeinen Fall unmöglich, weil Sie Informationen verloren haben. Betrachten Sie diese, zum Beispiel:
void foo(String x) {}
void foo(Object y) {}
foo("hello"); // Calls first method
foo((Object) "hello"); // Calls second method
Hier werden die Argument Werte gleich sind - aber die Ausdrücke einen anderen Typ haben.
Sie können alle Methoden finden, die wäre gültig für die Argumentwerte - modulo generische Informationen verloren durch Typ löschen - mit Class.isAssignableFrom
. Hilft dir das genug?
Beachten Sie, dass Sie auch sorgfältig darüber nachdenken müssen, wie Sie null Argument Werte verarbeiten, die offensichtlich gültig wäre für jede Referenzart Parameter ...
Bitte Leerzeichen verwenden, anstatt Registerkarten, wenn Code-Formatierung auf Stack-Überlauf. –