2010-04-16 100 views
0

我使用java反射從類中獲取方法(加載了這些類)。現在我想要獲取這些方法的調用層次結構。如何在eclipse IDE中使用調用層次結構選項那?任何例子或鏈接????獲取使用反射方法的調用層次結構

+2

http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection – 2010-04-16 05:37:12

+1

@Michael - 我不這麼認爲。我認爲他想要一個電話TREE ... – 2010-04-16 07:07:12

回答

3

建議的解決方案是使用Thread.currentThread().getStackTrace()爲了獲得當前跟蹤呼叫者。

但是,您希望獲取此信息不是針對當前正在執行的方法,而是針對任何類中的任何方法。這不容易做到。我認爲你必須使用字節碼實用程序檢查類路徑中的所有類並匹配調用指令。有些東西你會花費太多時間,而且我非常肯定它不是必需的,除非你正在開發一個IDE。

無論如何,您可以獲取Eclipse或NetBeans源代碼並查看它是如何在其中實現的。

+0

+1 - 我認爲這是他問的...和我同意這會很難實現,而且運行起來很昂貴。 – 2010-04-16 07:08:47

0

您可以使用StackTrace對象。

但是這對我來說看起來很脆弱。最好避免這種邏輯...爲什麼不把呼叫者作爲參數傳遞給方法?

+0

我需要它的一些檢查purpose.How我可以使用StackTrace對象的TIS ??(沒有得到你) – Steven 2010-04-16 05:50:07

0

在位於層次結構根部的方法中拋出異常。然後你可以捕捉到異常和printStackTrace()

我相信會有比這更清潔的解決方案。但是這也會起作用。

1
StackTraceElement[] stackTrace = new Throwable().getStackTrace(); 
相關問題