java中是否有快速获取嵌套/递归级别的方法?
我正在编写一个函数来制作一个群组及其成员的列表。成员也可以是小组。我们可能最终得到一组循环的小组/成员。
我想停在某个任意级别。
我知道我可以将变量放在更高的范围内或传递递增的参数,但我想知道Java中是否有任何堆栈级别信息。
我想即使有,但诀窍是要知道你希望从哪个级别的嵌套开始计算。所以,这一点可能没有实际意义,但如果有任何快速信息,我仍然感兴趣。
答案 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数组