Java堆栈/嵌套计数

时间:2009-06-12 18:43:48

标签: java recursion

java中是否有快速获取嵌套/递归级别的方法?

我正在编写一个函数来制作一个群组及其成员的列表。成员也可以是小组。我们可能最终得到一组循环的小组/成员。

我想停在某个任意级别。

我知道我可以将变量放在更高的范围内或传递递增的参数,但我想知道Java中是否有任何堆栈级别信息。

我想即使有,但诀窍是要知道你希望从哪个级别的嵌套开始计算。所以,这一点可能没有实际意义,但如果有任何快速信息,我仍然感兴趣。

4 个答案:

答案 0 :(得分:4)

不需要Throwable

它不会很快,但你可以使用它:http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace()

StackTraceElement[] stack = Thread.currentThread().getStackTrace();

你必须以一种有意义的方式遍历堆栈,但这应该让你开始

答案 1 :(得分:1)

你可以在你想要的地方做一个扔掉,并拨打getStackTrace()

答案 2 :(得分:1)

您应该直接解决检测周期的问题,而不是通过嵌套深度的任意限制。保留一组您已访问过的节点,并检查当前节点是否在那里。

答案 3 :(得分:0)

java.lang.Throwable确实有getStackTrace()方法,它为您提供了一个StackTraceElements数组