Den Aufrufer einer Methode mithilfe von Stacktrace oder Reflection finden
In Java kann der Aufrufer einer Methode durch Stacktrace oder Reflection ermittelt werden .
Stacktrace verwenden
Die Die Methode Thread.currentThread().getStackTrace() gibt ein Array von StackTraceElement-Objekten zurück, die die Stack-Trace-Elemente des aktuellen Threads darstellen. Das letzte Element im Array stellt das unterste Ende des Stapels oder den am wenigsten aktuellen Methodenaufruf dar.
Jedes StackTraceElement-Objekt bietet Zugriff auf den Klassennamen (getClassName()), den Dateinamen (getFileName()) und die Zeile Nummer (getLineNumber()) und Methodenname (getMethodName()) des entsprechenden Methodenaufrufs. Um den Anrufer zu bestimmen, können Sie normalerweise das Element an Index 1 oder 2 des StackTraceElement-Arrays verwenden.
Verwendung von Reflection
Reflection bietet einen weiteren Ansatz zur Identifizierung des Anrufers. Die Methode Class#getDeclaringClass() gibt die Klasse zurück, die die angegebene Methode deklariert hat. Dies kann nützlich sein, wenn Sie die Klasse der aufrufenden Methode unabhängig vom aktuellen Stack-Trace erhalten möchten.
Beispiel
Hier ist ein Beispiel, bei dem Stacktrace verwendet wird, um den Aufrufer zu finden des Stroms Methode:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); if (stackTraceElements.length > 1) { StackTraceElement caller = stackTraceElements[1]; System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName()); }
Überlegungen
Das obige ist der detaillierte Inhalt vonWie kann ich den Aufrufer einer Java-Methode mithilfe von Stack Trace oder Reflection finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!