繁体   English   中英

我如何确定某个特定的Java方法是否在几个堆栈级别下调用另一个特定的Java方法?

[英]How can I determine if a particular Java method calls another particular Java method several stack levels down?

假设我有方法A,我想知道启动方法A是否可能导致方法D被启动。 确定A是否直接调用D显然很容易,但是有没有办法确定D是否被进一步调用(例如:A调用B,B调用C,C调用D)?

基本上,我希望对特定方法中的所有方法调用进行递归搜索,以找到另一个特定方法调用。 任何帮助,将不胜感激。

问候,布兰登

如果您具有IDE(例如Eclipse或Netbeans),则可以在方法D中放置一个断点,然后在“调试”视图中查看该点的堆栈。

例如,在Eclipse中,将有一个类似于以下内容的面板:

Eclipse帮助中的图像

您可以在堆栈中看到main()已被调用。

在您的示例中,它可能看起来像这样:

ClassZ.D() line: P
ClassY.C() line: O
ClassX.B() line: N
ClassW.A() line: M

找到了解决方案 显然,我不是唯一提出这个问题的人,我只是说的不完全相同。 这是最好的解决方案(感谢Raedwald,它确实使用了Eclipse中的Call Hierarchy!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM