Betrachten Sie das folgende Snippet:
%Vor% getMethod()
ist sich offensichtlich nicht bewusst, dass eine String
einer Methode zugeführt werden könnte, die Object
erwartet (tatsächlich heißt es in der Dokumentation, dass sie nach der Methode mit dem angegebenen Namen und genau dem gleichen formalen Parameter sucht Typen ).
Gibt es eine direkte Methode, um Methoden wie getMethod()
reflektiv zu finden, aber unter Berücksichtigung von Polymorphie, so dass das obige Beispiel die print(Object)
-Methode finden könnte, wenn sie mit ("print", String.class)
-Parametern abgefragt wird?
Der einfachste Weg dazu ist java.beans.Statement oder java.beans.Expression. Macht all diese harten Werften für Sie.
getMethod () ist sich das offensichtlich nicht bewusst Ein String könnte einer Methode zugeführt werden das erwartet ein Objekt
"Unaware" ist eine seltsame Art, es zu sagen. getMethod()
entspricht seiner Spezifikation. Sie müssen die formalen Parameter angeben, nicht die Typen der tatsächlichen Argumente.
%Vor%
Beispielverwendung:
%Vor% Für die Methode invoke(Object invoker, String methodName, Object[] parameters)
ist es jedoch möglich, eine falsche Methode aufzurufen, wenn die Signatur nicht eindeutig ist. Zum Beispiel, wenn es zwei Methoden für den Aufrufer gibt:
Das Übergeben des folgenden Parameters kann falsche Methode
aufrufen %Vor%Tags und Links java reflection polymorphism