在Java中有快速的方法來獲得巢/遞進級別?Java堆棧/巢數
我正在寫一個函數來創建組及其成員的列表。成員也可以是組。我們最終可能會得到一組循環的組/成員。
我想停止在一些任意級別。
我知道我可以在更高範圍內保留一個變量或傳遞一個遞增的參數,但是我想知道是否有任何Java立即可用的堆棧級別信息。
我想即使有,訣竅就是要知道你想從哪個層次開始計算。所以,這一點可能是沒有意義的,但是如果有任何快速信息,我仍然感興趣。
在Java中有快速的方法來獲得巢/遞進級別?Java堆棧/巢數
我正在寫一個函數來創建組及其成員的列表。成員也可以是組。我們最終可能會得到一組循環的組/成員。
我想停止在一些任意級別。
我知道我可以在更高範圍內保留一個變量或傳遞一個遞增的參數,但是我想知道是否有任何Java立即可用的堆棧級別信息。
我想即使有,訣竅就是要知道你想從哪個層次開始計算。所以,這一點可能是沒有意義的,但是如果有任何快速信息,我仍然感興趣。
無需一個Throwable的
它不會那麼快,但你可以這樣做:http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace()
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
你必須以一種平均的方式遍歷堆棧,但這應該讓你開始
您可以在您想要它做一個拋出和並呼籲getStackTrace()
java.lang.Throwable確實有方法getStackTrace()它給你一個StackTraceElements的數組
你應該解決直接檢測週期的問題,而不是通過任意的嵌套深度限制。保留已經訪問過的一組節點,並檢查當前節點是否在那裏。
+1我知道還有另一種方式,忘了它是什麼,謝謝指出它 – 2009-06-12 18:49:02