die Namen der einschließenden Methode
dass die Methode
public void foo(){
//..
}
Ist es ein Weg, um die methodName (in diesem Fall foo) zur Laufzeit?
Weiß ich, wie man den Klassennamen über
diese.getClass().getName()
oder, um alle öffentlichen Methoden über
Method[] methods = this.getClass().getMethods();
Einmal habe ich den Namen der Methode, die Parameter wäre auch wichtig, da könnte es mehrere Methoden mit demselben Namen
- mögliche Duplikate von Immer den Namen der aktuell ausgeführte Methode
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht sicher, warum Sie dies tun müssen, aber Sie können immer ein
new Throwable()
undgetStackTace()
, dann AbfrageStackTraceElement.getMethodName()
.Als bonus erhalten Sie die ganze stack-trace bis hin zur Durchführung, nicht nur der unmittelbar einschließenden Methode.
Fragen
Reflexion ist eine Möglichkeit. Anderen langsam und potentiell unzuverlässig Weg ist mit einem stack-trace.
Gleiche Idee, aber von der thread:
getStackTrace
Methode und mögliche Unzuverlässigkeit.Class
Objekt, rufen SiegetMethods
und passen die Namen mit dem richtigen argument-Typen zu bekommenMethod
Objekt. Schauen Sie sich die JavaDoc fürClass
: java.sun.com/javase/6/docs/api/java/lang/Class.htmlIch code wie den folgenden verwenden:
Nur verlassen aus der className + "." Teil und sehen, ob es Ihren Bedürfnissen entspricht.
Verwenden Sie diesen code:
Sie können schwer-code den Namen.
Diese Frage wurde vor Jahren, aber ich denke, es würde sich lohnen, zu synthetisieren, die frühere Antworten in einem einfacheren Ausdruck:
Trotz seiner Hässlichkeit und die Probleme mit der Zuverlässigkeit zitiert, es ist sauber und kann leicht verwendet werden, mit
Log.x()
Funktionen zu Debuggen.