Heim > Java > javaLernprogramm > Wie kann ich den Aufrufer einer Java-Methode mithilfe von Stack Trace oder Reflection finden?

Wie kann ich den Aufrufer einer Java-Methode mithilfe von Stack Trace oder Reflection finden?

Mary-Kate Olsen
Freigeben: 2024-12-21 18:33:15
Original
589 Leute haben es durchsucht

How Can I Find the Caller of a Java Method Using Stack Trace or Reflection?

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());
}
Nach dem Login kopieren

Überlegungen

  • Der Index des Aufrufers im Stacktrace kann je nach Aufrufkontext variieren.
  • Reflection ist in bestimmten Umgebungen, z. B. Android, möglicherweise nicht verfügbar.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage