使用 Stacktrace 或 Reflection 尋找方法的呼叫者
在 Java 中,可以透過 Stacktrace或反射來決定方法的呼叫者.
使用Stacktrace
Thread.currentThread().getStackTrace() 方法傳回StackTraceElement 物件的數組,表示當前執行緒的堆疊跟踪元素。數組中的最後一個元素表示堆疊的底部,或最近的方法呼叫。
每個StackTraceElement 物件都提供對類別名稱(getClassName())、檔案名稱(getFileName())、行的存取對應方法呼叫的編號(getLineNumber()) 和方法名稱(getMethodName()) 。若要決定呼叫者,通常可以使用 StackTraceElement 陣列的索引 1 或 2 處的元素。
使用反射
反射提供了另一種辨識呼叫者的方法。 Class#getDeclaringClass() 方法傳回宣告指定方法的類別。如果您想獲取呼叫方法的類別而不考慮當前的堆疊跟踪,這會很有用。
範例
這裡有一個使用 stacktrace尋找呼叫者的範例目前的方法:
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); if (stackTraceElements.length > 1) { StackTraceElement caller = stackTraceElements[1]; System.out.println("Caller: " + caller.getClassName() + "." + caller.getMethodName()); }
注意事項
以上是如何使用堆疊追蹤或反射找到 Java 方法的呼叫者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!