get Name der einschließenden Methode

8

mit der Methode

%Vor%

Gibt es eine Möglichkeit, den Methodennamen (in diesem Fall foo) zur Laufzeit zu erhalten?

Ich weiß, wie man den Klassennamen über

bekommt
  

this.getClass (). getName ()

oder um alle öffentlichen Methoden zu bekommen %Code% Sobald ich den Methodennamen habe, wären die Parameter auch wichtig, da es mehrere Methoden mit demselben Namen geben könnte

    
Martin Dürrmeier 29.06.2010, 15:19
quelle

6 Antworten

4

Ich bin nicht sicher, warum Sie dies tun müssen, aber Sie können immer ein new Throwable() erstellen und getStackTace() , dann abfragen StackTraceElement.getMethodName() .

Als Bonus erhalten Sie die ganze Stapelverfolgung bis zum Ausführungspunkt, nicht nur die sofort umschließende Methode.

Verwandte Fragen

polygenelubricants 29.06.2010, 15:23
quelle
5

Reflexion ist ein Weg. Ein weiterer langsamer und potenziell unzuverlässiger Weg ist mit eine Stapelverfolgung.

%Vor%

Die gleiche Idee, aber aus dem Thread :

%Vor%     
Jonathon Faust 29.06.2010 15:23
quelle
3

Ich verwende einen Code wie den folgenden:

%Vor%

Lass einfach den className + "." Teil und sehen, ob es Ihren Bedürfnissen entspricht.

    
Jim 19.03.2012 21:36
quelle
1

Sie können den Namen fest codieren.

%Vor%     
emory 29.06.2010 22:48
quelle
1

Verwenden Sie diesen Code:

%Vor%     
RaZieRSarE 06.01.2017 21:29
quelle
0

Diese Frage wurde vor Jahren gestellt, aber ich denke, dass es sich lohnen würde, die vorherigen Antworten in einem einfacheren Ausdruck zu synthetisieren:

%Vor%

Trotz seiner Hässlichkeit und der genannten Zuverlässigkeitsprobleme ist es sauber und kann leicht mit Log.x() functions benutzt werden, um beim Debuggen zu helfen.

    
Miguel Dutra 08.09.2013 14:34
quelle

Tags und Links